难度:中等
题目:
给你二叉树的根节点
root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内 -1000 <= Node.val <= 1000
Related Topics
- 树
- 广度优先搜索
- 二叉树
重点!!!解题思路
使用递归和栈来解决此题
此题和从上到下遍历二叉树差不多
就是给从上到下遍历二叉树翻转一下
如果有从上到下遍历二叉树不会的小伙伴请查看我上一篇算法题
源码+讲解
class Solution {
List<List<Integer>> res;
public List<List<Integer>> levelOrderBottom(TreeNode root) {
res = new ArrayList<>();
dfs(root,0);
Collections.reverse(res); //翻转集合
return res;
}
public void dfs(TreeNode root,int k){
if (root==null) return;
if (res.size()==k) res.add(new ArrayList<>());
res.get(k).add(root.val);
dfs(root.left,k+1);
dfs(root.right,k+1);
}
}
运行结果:
如果您还有什么疑问或解答有问题,可在下方评论,我会及时回复。
系列持续更新中,点个订阅吧