二叉树的最大深度

 

题目:给定一个二叉树,找出其最大深度

 

一、使用递归

执行用时: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
};

 

posted @ 2021-03-04 20:08  Jiox  阅读(59)  评论(0)    收藏  举报