二叉树的学习
二叉树的划分
-----------------------------------
二叉树分为 一般二叉树,满二叉树,完全二叉树。
一般二叉树就是普通的二叉树。
满二叉树,是所有节点全部存满的二叉树。
完全二叉树是在满二叉树的前提下,从右边砍掉一些节点的结果。为什么要有完全二叉树,是因为二叉树需要转换成线性结构储存。
普通树转换为二叉树
-----------------------------------
上面是普通树,下面是转换后的二叉树
转换遵循: 左子树为它的孩子(childen子节点),右子树为它的兄弟(就是旁边的节点)。
转换后就是这样,这个转换比较精妙。另外森类型的转换也和这个转换一样。
二叉树的先序遍历,中序遍历,后序遍历
-----------------------------------
先序遍历的规则是:自己-左子树-右子树
中序遍历:左子树-自己-右子树
后序遍历是:左子树-右子树-自己
可以发现,都是按照先序遍历的标准,然后调换顺序。
以上图为例
先序遍历:A-B-D-E-C-F-G-H
中序遍历:D-B-E-A-F-C-G-H
后序遍历:D-E-B-F-H-G-C-A
主要还是用递归程序的思路去想,容易理解一些。它是一层一层的
知道两种遍历结果,求树的形状
-----------------------------------
据说面试经常面这个。。不过只是据说。。
必须是知道先序,中序或者中序,后序的情况下。才能还原二叉树
为什么?因为只知道一种遍历情况,不知道接下去的情况是左子树遍历完了,已经遍历到右子树了,还是左子树没遍历完。
而只知道先序,后序的时候,无法分辨谁是最外侧的左子树,和最外侧的右子树。所以不行
知道先序,中序 求树的形状
后续和中序,只要知道后续最后一个肯定是最外面的根。以此类推就行了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理