标签:roo code traversal order private == 思路 empty 判断
给定一个二叉树,返回其节点值的层数顺序遍历。 (即,从左到右,逐级)。
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] ]
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if(root == null) return res;
travel(root,res,0);
return res;
}
private void travel(TreeNode root,List<List<Integer>> res,int depth){
if(root == null) return;
List<Integer> list;
if(depth >= res.size()){ //深度》=集合大小,说明没有合适的位置存放节点值
list = new ArrayList<>(); //创建新List
list.add(root.val);
res.add(list);
}else{ //res中存在合适的位置
list = res.get(depth);
list.add(root.val);
}
travel(root.left,res,depth+1);
travel(root.right,res,depth+1);
}
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if(root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int size = 0;
while(!queue.isEmpty()){
//每层遍历之前船舰新List
List<Integer> list = new ArrayList<>();
size = queue.size();//计算本层的节点总数
while(size != 0){
root = queue.poll();
if(root != null){
list.add(root.val);
}
if(root.left != null){
queue.add(root.left);
}
if(root.right != null){
queue.add(root.right);
}
size --;//每遍历一个节点,本层数量--
}
res.add(list);
}
return res;
}
LeetCode 102:Binary Tree Level Order Traversal
标签:roo code traversal order private == 思路 empty 判断
原文地址:https://www.cnblogs.com/le-le/p/12927191.html