# 二叉树的最小深度
# 题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
# 解题思路
解题思路与二叉树的最大深度差不多 ,但是有一点需要注意,那就是如下这种情况:
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
阅读全文
← 二叉树的最大深度 二叉树的序列化与反序列化 →