【刷题日记】590. N 叉树的后序遍历

简介: 本次刷题日记的第 5 篇,力扣题为:【刷题日记】590. N 叉树的后序遍历 ,简单

【刷题日记】590. N 叉树的后序遍历

本次刷题日记的第 5 篇,力扣题为:【刷题日记】590. N 叉树的后序遍历简单

一、题目描述:

image.png

乍一看到这个题,有没有感觉很熟悉,仿佛就在上一篇文章中做过

xdm ,你的感觉没错,这个题内容就是和上一题一毛一样,只不过是把之前多叉树的前序遍历,在此处换成了多叉树的后序遍历

对于上一篇,看明白的朋友们,相信做这道遍历后序的题(【刷题日记】589. N 叉树的前序遍历),绝对难不倒你,相信不


二、思路分析:

1、这道题考察了什么思想?你的思路是什么?

之前有分享过什么是二叉树 / 多叉树的 前序遍历,中序遍历,后序遍历,二叉树的后序遍历就是先遍历左子树,再遍历右子树,最后遍历根

对于多叉树来说就是,先遍历多叉树的孩子节点,再遍历根节点

那么对于今天的多叉树的后序遍历来说,我们也可以用示例推演一下,一起走过一遍,这种对于树的递归遍历,都是大同小异了

我们仍然还是用题中的实例作为推演,

输入:root = [1,null,3,2,4,null,5,6]
输出:[5,6,3,2,4,1]

image.png

相信上图的演示能够让你看明白,每一个节点是如何加入到结果集的,多叉树的后序遍历,按照左右根的方式来进行递归遍历,你也可以很快很轻松的完成

2、尝试编码

根据上述的推演和分析,我们只需要一棵子树一棵子树的去按照 左右根 的方式进行遍历即可

func postorder(root *Node) (ans []int) {
    var dfs func(*Node)
    dfs = func(node *Node) {
        if node == nil {
            return
        }
        // 先遍历孩子节点
        for _, ch := range node.Children {
            dfs(ch)
        }
        // 再把根节点加入到结果集中
        ans = append(ans, node.Val)
    }
    dfs(root)
    return
}

看了上述编码,有没有发现和前序遍历就是部分代码顺序的调整?实际上也确实是这样的,如果还有没有明白的地方,可以多多推演几次就能明白了

四、总结:

上述做法和多叉树的前序遍历做法基本一致,so , 对于时间复杂度和空间复杂度也是一样的

时间复杂度是 O(m) , 这个 m 表示的是 多叉树的节点个数

空间复杂度是 O(m)

原题地址:590. N 叉树的后序遍历

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关文章
|
开发者 iOS开发
如何使用 Instruments 工具来分析应用的性能?
如何使用 Instruments 工具来分析应用的性能?
610 2
|
Java Spring
springboot的自动配置原理
springboot的自动配置原理
|
10月前
|
存储 人工智能 云栖大会
【云栖大会】阿里云设计中心 × 教育部协同育人项目成果展,PAI ArtLab助力高校AIGC教育新路径
【云栖大会】阿里云设计中心 × 教育部协同育人项目成果展,PAI ArtLab助力高校AIGC教育新路径
|
人工智能 资源调度 机器人
揭秘重磅嘉宾!2024云栖大会看什么
2024云栖大会来了! 将于9月19日至9月21日 在杭州云栖小镇召开 汇集全球最新云计算、AI硬科技
565 8
揭秘重磅嘉宾!2024云栖大会看什么
|
机器学习/深度学习 监控 算法
现货量化交易机器人系统开发策略逻辑及源码示例
现货量化交易机器人系统是一种基于计算机算法和数据分析的自动化交易工具。该系统通过制定交易策略、获取和处理数据、生成交易信号、执行交易操作和控制风险等环节,实现高效、精准的交易决策。系统架构可采用分布式或集中式,以满足不同需求。文中还提供了一个简单的双均线策略Python代码示例。
|
机器学习/深度学习 自然语言处理
机器翻译(Machine Translation, MT)
机器翻译(Machine Translation, MT)
538 1
|
Kubernetes 网络协议 druid
一文详解长连接黑洞重现和分析
本文先通过重现在不同业务线反复出现的问题,详细描述了从业务、数据库、OS等不同的角度来分析如何解决它。
|
存储 算法 安全
用C++打造极致高效的框架:技术探索与实践
本文探讨了如何使用C++构建高性能框架。C++凭借其高性能、灵活性和跨平台性成为框架开发的理想选择。关键技术和实践包括:内存管理优化(如智能指针和自定义内存池)、并发编程(利用C++的并发工具)、模板与泛型编程以提高代码复用性,以及性能分析和优化。在实践中,应注意代码简洁性、遵循最佳实践、错误处理和充分测试。随着技术发展,不断提升对框架性能的要求,持续学习是提升C++框架开发能力的关键。
317 1
|
缓存 应用服务中间件 API
FM全网自动采集聚合影视搜索源码
FM 全网聚合影视搜索(响应式布局),基于 TP5.1 开发的聚合影视搜索程序,本程序无数据库,本程序内置P2P 版播放器,承诺无广告无捆绑。片源内部滚动广告与本站无关,谨防上当受骗,资源搜索全部来自于网络。
451 1

热门文章

最新文章