Binary Tree Level Order Traversal:层次遍历二叉树,并返回每层的数值

来源:互联网 发布:mwc飞控源码2.5 编辑:程序博客网 时间:2024/05/18 14:46

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]
思路:这里的关键是记录下每一层的节点个数,所以在每一层的开始,先记录下队列里的节点个数,在本层的遍历过程中,不在单独统计本层剩余节点数目,等到本层节点遍历完成时,队列里的节点敲好均为下一层的节点,在单独统计下一层的节点个数。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {         public List<List<Integer>> levelOrder(TreeNode root) {        Queue<TreeNode> q = new LinkedList<TreeNode>();        List<List<Integer>> list = new ArrayList<>();        if(root == null) return list;        q.offer(root);        while(!q.isEmpty()){        int levelsize = q.size();        List<Integer> l = new ArrayList<>();        for(int i = 0;i<levelsize;i++){        if(q.peek().left!=null){        q.offer(q.peek().left);        }        if(q.peek().right!=null){        q.offer(q.peek().right);        }        l.add(q.poll().val);        }        list.add(l);                }        return list;     }}


浮躁了一个多月了,现在浮躁成了常态了,这种很简单的题也得寻求帮助了,不上不下的分数,不上不下的大学,不上不下的人生.....



阅读全文
0 0
原创粉丝点击