/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> l1=new ArrayList<>();
if(root==null)
return l1;
List<Integer> l2=new ArrayList<>();
Queue<TreeNode> q=new LinkedList<>();
q.offer(root);
int i=1;//判断一层是否都从队列里出来,如果求层数就在i==0中进行层数加1
while(q.isEmpty()!=true){
TreeNode t1=q.poll();
i--;
l2.add(t1.val);
if(t1.left!=null)
q.offer(t1.left);
if(t1.right!=null)
q.offer(t1.right);
if(i==0){
i=q.size();
l1.add(new ArrayList<Integer>(l2)); //此处不能直接l1.add(l2)这样是浅拷贝,之后clear后都为空了
l2.clear();
}
}
List<List<Integer>> l3=new ArrayList<>();
for(i=l1.size()-1;i>=0;i--){
l3.add(l1.get(i));
}
return l3;
}
}
Leetcode 107(层次遍历)二叉树的层次遍历 II
最新推荐文章于 2020-06-16 16:55:38 发布