12 JS 二叉树的最小深度

55 阅读1分钟

题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

思路

  • 1、判断根节点是否存在
  • 2、判断根节点是否有左右子树
  • 3、如果左右节点都存在,递归求解左右子树的最小深度
  • 4、如果只有左子树或者只有右子树,则递归求解右子树或者左子树的最小深度

代码

var minDepth = function(root) {
    if(!root) return 0
    let leftDepth=minDepth(root.left)
    let rightDepth=minDepth(root.right)
    //叶子节点是指没有子节点的节点,所以,只要节点有一个子树为空,但另一个子树不为空,就不是叶子节点,要返回不为空的子树的深度
    return root.left==null||root.right==null?leftDepth+rightDepth+1:1+Math.min(leftDepth,rightDepth)
};