LeetCode题解:104. 二叉树的最大深度,递归,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

解题思路:

  1. 递归遍历二叉树,用递归函数的一个参数标识当前层的深度,进入每一层时将当前层级标识+1。
  2. 遍历叶子节点时,将当前深度与已存储的最大深度对比,记录最大深度。
/**
 * @param {TreeNode} root
 * @return {number}
 */
var maxDepth = function (root) {
     
  let max = 0; // 存储最大深度

  // 递归遍历节点,并计算当前深度
  function recursion(node, level) {
     
    const newLevel = level + 1; // 进入递归时,将当前层级+1

    // 当子节点都为空,表示当前节点为叶子节点
    if (!node.left && !node.right) {
     
      // 存储当前最大深度
      max = Math.max(max, newLevel);
    }

    // 当左右节点存在时,才继续遍历
    node.left && recursion(node.left, newLevel);
    node.right && recursion(node.right, newLevel);
  }

  // 只有二叉树存在时,才进行遍历
  root && recursion(root, 0);

  return max;
};
/**
 * @param {TreeNode} root
 * @return {number}
 */
var maxDepth = function (root) {
     
  let max = 0;
  function traversal(node, level) {
     
    if (!node) {
     
      max = Math.max(max, level);
      return;
    }

    const newLevel = level + 1;
    traversal(node.left, newLevel);
    traversal(node.right, newLevel);
  }
  traversal(root, 0);
  return max;
};

你可能感兴趣的:(LeetCode,leetcode)