二叉树的层序遍历||力扣--107
目录
题目
思路
代码
题目
给你二叉树的根节点 root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
思路
参照力扣102,只需最后把数组反转即可
代码
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();//二维数组
Deque<TreeNode> deq=new LinkedList<>();//队列
if(root==null){return list;}//特殊情况
deq.offerLast(root);
while(!deq.isEmpty()){
List<Integer> levelList = new ArrayList<>();
int len=deq.size();
while(len>0){
TreeNode e=deq.poll();
levelList.add(e.val);
if(e.left!=null){deq.offerLast(e.left);}
if(e.right!=null){deq.offerLast(e.right);}
len--;
}
list.add(levelList);//把一层的结果加入到最终的结果集中
}
List<List<Integer>> result = new ArrayList<>();
for (int i = list.size() - 1; i >= 0; i-- ) {/反转了数组
result.add(list.get(i));
}
return result;
}
}