题目名称

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例

输入:root = [3,9,20,null,null,15,7]
输出:[[15,7],[9,20],[3]]

输入:root = [1]
输出:[[1]]

题解

采用深度优先遍历的方式,记录当前遍历深度,然后相对应深度位置的数组元素中添加当前节点的值,最后吧返回值翻转一下

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrderBottom = function(root) {
let arr = []
const dfs = (node, index) => {
if(arr[index]) {
arr[index].push(node.val)
} else {
arr[index] = [node.val]
}
node.left && dfs(node.left, index + 1)
node.right && dfs(node.right, index + 1)
}
root && dfs(root, 0)
return arr.reverse()
};