二叉树的最大深度
题目:给定一个二叉树,找出其最大深度
一、使用递归
执行用时:84 ms, 在所有 JavaScript 提交中击败了92.40%的用户
内存消耗:40.7 MB, 在所有 JavaScript 提交中击败了36.99%的用户
var maxDepth = function(root) {
if(!root) return 0
let level = 1
function dep(root,lev){
level = Math.max(lev,level)
if( root.left)
dep(root.left,lev+1)
if( root.right)
dep(root.right,lev+1)
return
}
dep(root,level)
return level
};
二、在递归过程集合比较最大值
执行用时:100 ms, 在所有 JavaScript 提交中击败了32.36%的用户
内存消耗:40.9 MB, 在所有 JavaScript 提交中击败了22.35%的用户
const maxDepth = function(root) {
if(!root) return 0;
let left = maxDepth(root.left)//递归入口、传参
let right = maxDepth(root.right)
return Math.max(left,right) + 1 //递归返回值
};
三、在递归的过程中判断深度极大值
执行用时:104 ms, 在所有 JavaScript 提交中击败了21.98%的用户
内存消耗:40.4 MB, 在所有 JavaScript 提交中击败了76.69%的用户
const maxDepth = function(root) { let res=0 const dfs=(n,level)=>{ if(!n){return} if(!n.left&&!n.right){//n为叶子节点,记录他的深度和目前最深的深度进行比较 res=Math.max(level,res) } dfs(n.left,level+1) dfs(n.right,level+1) } dfs(root,1) return res };

浙公网安备 33010602011771号