/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//使用队列实现层序遍历
Deque<TreeNode> que = new LinkedList<>();
List<List<Integer>> res = new ArrayList<List<Integer>>();
if(root!=null){
que.offer(root);
}
while(!que.isEmpty()){
//itemlist放在第一层循环内,第二层循环外
List<Integer> itemlist = new ArrayList<Integer>();
int size = que.size();
while(size-->0){
TreeNode tmp = que.poll();
itemlist.add(tmp.val);
if(tmp.left!=null) que.offer(tmp.left);
if(tmp.right!=null) que.offer(tmp.right);
}
res.add(itemlist);
}
return res;
}
}
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<List<Integer>> res = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
checkFun01(root,0);
return res;
}
public void checkFun01(TreeNode cur, Integer depth){
if (cur==null){
return;
}
//深度是从1开始
depth++;
//size小于depth时,加入一个itemlist
if(res.size() < depth){
List<Integer> itemlist = new ArrayList<>();
res.add(itemlist);
}
res.get(depth-1).add(cur.val);
checkFun01(cur.left,depth);
checkFun01(cur.right,depth);
}
}