# 二叉树的最小深度

# 题目描述

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

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

# 解题思路

解题思路与二叉树的最大深度差不多 ,但是有一点需要注意,那就是如下这种情况:

    1
   /
  2

这种情况的最小深度应该是2

所以如果还是和求「最大深度」一样的话,就不满足了。

因此需要多加一层判断:判断若是一方子树有,另一方子树没有的时候,应该返回有的那方子树的深度再加1。

# coding

class Tree {
    constructor(value = 0, left = null, right = null) {
        this.value = value;
        this.left = left;
        this.right = right;
    }
}
function getMinDeep(tree) {
  if (!node) return 0;
  let left = getMinDeep(node.left);
  let right = getMinDeep(node.right);
  if ((left && !right) || (!left && right)) return (left || right) + 1;
  return Math.min(left, right) + 1;
}
const tree = new Tree(1, new Tree(2, new Tree(4), new Tree(6, new Tree(7, new Tree(9)))), new Tree(3, new Tree(8), new Tree(5)));
const tree2 = new Tree(1, new Tree(2), new Tree(3, new Tree(4), new Tree(5)))
const tree3 = new Tree(1, new Tree(2));
console.log(getMinDeep(tree)) // 3
console.log(getMinDeep(tree2)) // 2
console.log(getMinDeep(tree3)) // 2
阅读全文