求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
求给定二叉树的最大深度。最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。
// 最小深度
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型
*/
function run( root ) {
// write code here
if(!root) {return 0}
const queue = [root]
let depth = 0
let len = 0
while(len = queue.length){
depth++
for(let i=0;i<len;i++){
const node = queue.shift()
if(!node.left&&!node.right) return depth;
if(node.left) queue.push(node.left)
if(node.right) queue.push(node.right)
}
}
}
module.exports = {
run : run
};
//最大深度
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型
*/
function maxDepth( root ) {
if(!root) return 0
let stack = [root]
let depth = 0
let len = 0
while(len = stack.length){
depth++
for(let i=0;i<len;i++){
let node = stack.shift()
if(node.left) stack.push(node.left)
if(node.right) stack.push(node.right)
}
}
return depth
}
function maxDepth( root ) {
// write code here
if (root) {
return Math.max(maxDepth( root.left ), maxDepth( root.right )) + 1;
} else {
return 0;
}
}
module.exports = {
maxDepth : maxDepth
};