继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【学习打卡】第13天 数据结构之“树”

风吹尘
关注TA
已关注
手记 61
粉丝 9
获赞 1

课程名称:JavaScript版数据结构与算法
课程章节:第8章 数据结构之“树”
主讲老师:lewis

课程内容:

今天学习的内容包括:
8-5 LeetCode:104. 二叉树的最大深度——基于深度优先遍历获取二叉树的最大深度。
8-6 LeetCode:111. 二叉树的最小深度——基于广度优先遍历获取二叉树的最小深度。

课程收获:

二叉树的最大深度

1、为了更好的理解二叉树的最大深度获取方法,在这里先复习下深度优先遍历:尽可能的搜索树的分支,对子节点按哥进行深度优先遍历,直至无节点。
2、因此我们在二叉树进行深度优先遍历时,获取到最大的层数就可以了,也就是最大深度。

var maxDepth = function(root) {
    let res = 0
    const dfs = (n,l) =>{
        if(!n) return
        if(!n.left && !n.right){
            res = Math.max(res,l)
        }
        dfs(n.left,l+1)
        dfs(n.right,l+1)
    }
    dfs(root,1)
    return res
};

二叉树的最小深度

1、为了更好的理解二叉树的最小深度获取方法,在这里先复习下广度优先遍历:基于队列的先进先出,把子节点挨个入队,然后出队。
2、因此我们在二叉树进行广度优先遍历时,当出队的节点无子节点时,返回当前的层级就可以了,也就是最小深度。

var minDepth = function(root) {
    if(!root) return 0
    let q = [[root,1]]
    while(q.length){
        const [n,l] = q.shift()
        if(!n.left && !n.right){
            return l
        }
        if(n.left) q.push([n.left,l+1])
        if(n.right) q.push([n.right,l+1])
    }
};

今天重新看了下昨天的先中后序的算法,通过堆栈实现,理解了,感觉很快就会忘掉,今天学习了二叉树的最大深度、最小深度,是基于前天学习的深度广度优先遍历实现,由此可见算法是持续性的,需要不断学习,也需要不断复习,不断的实践,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​​​http://img.mukewang.com/62fb53250001504b22861226.jpg

http://img.mukewang.com/62fb59fa00016c7c22861226.jpg

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP