给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
链接: https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
递归
var minDepth = function(root) {
if (!root) return 0
var L = minDepth(root.left), R = minDepth(root.right)
return 1 + (Math.min(L, R) || Math.max(L, R))
};
var minDepth = function(root) {
if (!root) return 0
if (root.left === null) return 1 + minDepth(root.right)
if (root.right === null) return 1 + minDepth(root.left)
return 1 + Math.min(minDepth(root.left), minDepth(root.right))
};
var minDepth = function(root) {
const res = [];
if (!root) return 0
const min = (root, level) => {
if (!root) return
if (!root.left && !root.right) {
res.push(level)
}
min(root.left, level + 1)
min(root.right, level + 1)
}
min(root, 1)
return Math.min(...res)
}
队列
var minDepth = function(root) {
if (!root) return 0
const stack = [root];
let depth = 1
while(stack.length) {
let len = stack.length
for (let i = 0; i < len; i++) {
const cur = stack.shift()
if (!cur.left && !cur.right) return depth
if (cur.left) stack.push(cur.left)
if (cur.right) stack.push(cur.right)
}
depth++
}
};