题目描述:
给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历)
解题思路:
- 本题的考察点是广度优先遍历,其次是集合向指定位置添加元素
代码如下:
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
if(root == null) return lists;
ArrayList<TreeNode> nodeList = new ArrayList<>();
nodeList.add(root);
while(!nodeList.isEmpty()){
ArrayList<Integer> list = new ArrayList<>();
int length = nodeList.size();
// 广度优先遍历
for(int i = 0; i < length; i++){
TreeNode p = nodeList.remove(0);
list.add(p.val);
if(p.left != null) nodeList.add(p.left);
if(p.right != null) nodeList.add(p.right);
}
// 指定位置 0 插入元素
lists.add(0,list);
}
return lists;
}