LeetCode刷题,剑指 Offer 32 - II. 从上到下打印二叉树 II

156 阅读1分钟

剑指 Offer 32 - II. 从上到下打印二叉树 II

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

解题代码

思路:记录每一层的位置,然后从左到右的将同一层的节点依次压入数组

var levelOrder = function(root) {
  let ans = [];
  let k = 0; // 记录当前节点是那层位置的
  getResult(root, k, ans);
  return ans;
};

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; // 子树的层级 + 1
  getResult(root.left, nextK, ans); // 遍历左子树
  getResult(root.right, nextK, ans); // 遍历右子树
}