Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
這道題用遞歸會非常好做,但是會遍歷到每個葉子節(jié)點,這是不必要的,當一個節(jié)點的深度已經(jīng)大于之前的某個子節(jié)點的深度時候,這個節(jié)點的子節(jié)點就不必遍歷了。
var minDepth = function(root) {
if(root === null) return 0;
var left = minDepth(root.left);
var right = minDepth(root.right);
return (left === 0 || right === 0) ? left + right + 1: Math.min(left,right) + 1;
};
非遞歸
var minDepth = function(root) {
if (!root)
return 0;
var depth = 99999;
root.val = 1;
var stack = [root];
while (stack.length!==0) {
var node = stack.pop();
if ((node.val+1)<depth) {
if (node.left) {
node.left.val = node.val+1;
stack.push(node.left);
}
if (node.right) {
node.right.val = node.val+1;
stack.push(node.right);
}
}
if (!node.left&&!node.right) {
if (node.val<depth) {
depth = node.val;
}
}
}
return depth;
};