给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
思路
利用队列遍历二叉树,内层循环次数是每层节点数,每遍历完一层,加入list
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(root==null){
return list;
}
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.offer(root);
while(!q.isEmpty()){
List<Integer> li=new ArrayList<Integer>();
int size=q.size();
for(int i=0;i<size;++i){
TreeNode t=q.poll();
li.add(t.val);
if(t.left!=null){
q.offer(t.left);
}
if(t.right!=null){
q.offer(t.right);
}
}
list.add(li);
}
return list;
}
}
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
set(root,0,list);
return list;
}
public void set(TreeNode t,int level,List<List<Integer>> list){
if(t==null){
return ;
}
if(level==list.size()){
list.add(new ArrayList());
}
list.get(level).add(t.val);
set(t.left,level+1,list);
set(t.right,level+1,list);
}
}
网友评论