二叉树的最大深度

题目

给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],
  3
 / \
9  20
  /  \
 15   7
返回它的最大深度 3 。

解法一

解题思路

利用 递归 的思想,逐个节点遍历,如果节点是 null,返回0,如果节点不是 null,返回左右子节点最大层数 + 1,+1是因为要算上根节点。

/**
 * @param {TreeNode} root
 * @return {number}
 */
export const maxDepth = function(root: any): number {
  return root === null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
}

解法二

解题思路

利用 层序遍历 的思想,逐层遍历,只要这一层有节点,就+1,否则结束。

export const maxDepthByLevel = function(root: any): number {
  let count = 0
  if (root !== null) {
    let rootList = [root]
    const getNodes = (rootList: any[]): void => {
      if (rootList.length) {
        count += 1
        const roots: any[] = []
        rootList.forEach((root): void => {
          if (root.left !== null) roots.push(root.left)
          if (root.right !== null) roots.push(root.right)
        })
        rootList = roots
        getNodes(rootList)
      }
    }
    getNodes(rootList)
  }
  return count
}
Last Updated:
Contributors: luhaifeng