107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
返回其自底向上的层次遍历为:
1 2 3 4 5
|
[ [15,7], [9,20], [3] ]
|
解法:
使用队列来实现二叉树的层遍历。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
public List<List<Integer>> cen1(TreeNode root){ List<List<Integer>> lists=new ArrayList<>(); if (root==null){ return lists; }
LinkedList<TreeNode> treeNodes=new LinkedList<>(); treeNodes.add(root); while(!treeNodes.isEmpty()){ List<Integer> list=new ArrayList<>(); int size=treeNodes.size(); for (int i=0;i<size;i++){ TreeNode n=treeNodes.pop(); list.add(n.val); if (n.l!=null){ treeNodes.add(n.l); } if (n.r!=null){ treeNodes.add(n.r); } } lists.add(list); } List<List<Integer>> lists1=new ArrayList<>(); for(int i=lists.size()-1;i>=0;i--){ lists1.add(lists.get(i)); } return lists1; }
|
近期评论