LeetCode刷题,二叉树的层序遍历 II(107)

104 阅读1分钟

二叉树的层序遍历 II

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

解题代码

思路:先将树中每一层的节点进行遍历存储,然后倒序遍历结果数组,返回新的数组。

var levelOrderBottom = function(root) {
  let ans = [];
  let reverseAns = [];
  let k = 0; // 记录当前节点是那一层
  getResult(root, k, ans);
  for (let i = ans.length - 1; i >= 0; i--) {
    reverseAns.push(ans[i]); // 反转数组中的顺序
  }
  return reverseAns; // 返回反转顺序后的结果数组即可
};
var getResult = function(root, k, ans){
  if (root === null) return null;
  if (k === ans.length) ans.push([]); // 当前层时添加一个数组,用于存节点值
  ans[k].push(root.val); // 存储k层节点值
  let nextK = k + 1;
  getResult(root.left, nextK, ans); // 遍历左子树
  getResult(root.right, nextK, ans); // 遍历右子树
}