Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题107二叉树的层序遍历 II
前文
本文为leetcode二叉树类型题目,题目序号107,主要考察二叉树层序遍历相关知识。
题目信息
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
解题思路
根据题目信息,很显然本题目为二叉树层序遍历相关题目。而题目目标为按层将数据存入二维数组,我们可以轻易想到解题思路主要是一个反向的二叉树层序遍历。因此,本题主要的解题思路采用层序遍历,在得到二叉树层序遍历结果后,再将结果处理后放入到目标数组中作为结果。而在层序遍历中,利用层数作为key,将结果存储到map中。二叉树的层序遍历则采用常用的递归方案即可。最后将map中的结果转化为我们需要的二位数组即可得到目标答案。也就是采用二叉树层序遍历即可完美解决该题目。
解题代码
Map<Integer,List<Integer>> map = new HashMap<>();
public List<List<Integer>> levelOrderBottom(TreeNode root) {
int depth = 0;
if(root != null){
levelOrderBottom(root,depth);
}
List<List<Integer>> result = new ArrayList<>();
for (int i = map.size() - 1; i >= 0 ; i--) {
result.add(map.get(i));
}
return result;
}
public void levelOrderBottom(TreeNode root,int depth) {
List<Integer> list = map.getOrDefault(depth,new ArrayList<>());
list.add(root.val);
map.put(depth,list);
if(root.left != null){
levelOrderBottom(root.left,depth + 1);
}
if(root.right != null){
levelOrderBottom(root.right,depth + 1);
}
}
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。