码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的最大深度

时间:2021-01-20 12:06:48      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:cti   遍历   递归   fun   返回   roo   变量   col   更新   

dfs

题解前递归

根节点是0,变量保存最大深度,如果当前深度大于最大深度就更新,返回最大深度

var maxDepth = function(root) {
    let maxDeep = 0  //最大深度
    let dg = (root,deep = 0) => {  //deep当前深度
        if(root == null) return
        deep++ 
        if(deep > maxDeep) maxDeep = deep
        dg(root.left,deep)
        dg(root.right,deep)
    }
    dg(root)
    return maxDeep
};

 题解后递归

叶子节点是0,递归到父节点 比较左子节点和右子节点的大小 + 1

var maxDepth = function(root) {
    if(root == null) return 0
    let left = maxDepth(root.left)
    let right = maxDepth(root.right)
    return Math.max(left,right) + 1
};

 

 

 bfs

遍历当前层所有节点,弹出,如果有子节点入栈,如果栈的长度大于0,深度 + 1

var maxDepth = function(root) {
    if(root == null) return 0
    let arr = [root]
    let deep = 1
    while(arr.length){
        let len = arr.length
        for(let i = 0; i < len; i++){
            let n = arr.shift()
            if(n.left) arr.push(n.left)
            if(n.right) arr.push(n.right)
        }
        if(arr.length > 0) deep++
    }
    return deep
};

 

二叉树的最大深度

标签:cti   遍历   递归   fun   返回   roo   变量   col   更新   

原文地址:https://www.cnblogs.com/jiaobaba/p/14300610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!