Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LeetCode题解:102. 二叉树的层序遍历,递归,JavaScript,详细注释 #182

Open
chencl1986 opened this issue Oct 6, 2020 · 0 comments

Comments

@chencl1986
Copy link
Owner

原题链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

解题思路:

  1. 使用递归首先要思考,当前递归函数运行的是第n次递归,那么当前要做哪些处理。
  2. 先考虑的是,假设此时遍历到了最后一个节点为null,要给递归设置终止条件。
  3. 该题要求按层输出结果,因此需要一个index标识当前所在的层。
  4. 在当前递归,使用传入的index作为参数,遍历下一层节点时,将index+1。
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
function recursion(node, res, index) {
  // 如果当前节点不存在,则退出递归
  if (!node) {
    return;
  }

  // 将节点的值,按照当前层的index存入结果
  res[index] ? res[index].push(node.val) : (res[index] = [node.val]);
  // 计算下一层的index
  const newIndex = index + 1;

  // 遍历子节点,并传入下一层的index
  recursion(node.left, res, newIndex);
  recursion(node.right, res, newIndex);
}
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function (root) {
  let result = []; // 储存结果

  // 递归遍历所有节点
  recursion(root, result, 0);

  return result;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant