关注我们获取更多计算机考研信息
? 今日习题
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树[3,9,20,null,null,15,7],
3
/\
9 20
/ \
15 7
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
……⏰ 思考时间……
如果你想好答案了
请查看解题思路和代码实现
▼
·解题思路·
如果当前的list(代码中的List集合)大小,小于目前的层级,需要增加一层,例如:如果遍历到第二层的话,list的大小还是1
关键在于 result.size() -level的大小,
最下面的层级在list里面的下标肯定是0
那么当前层的下标则是list大小减去当前层(层级从1开始)。(如果从0开始,需要再减1)
·代码实现·
class Solution {
public List> levelOrderBottom(TreeNode root) {
List> result = new ArrayList<>();
find(root, 1, result);return result;
}private void find(TreeNode root, int level, List> result) {if (root == null) {return;
}if (level > result.size()) {
result.add(0, new ArrayList<>());
}
result.get(result.size() - level).add(root.val);
find(root.left, level + 1, result);
find(root.right, level + 1, result);
}
}
微信关注“字节408考研”,
免费获取各院校计算机软件考研信息与专业课资料!