树, 二叉树学习笔记1
结点的度: 结点下面关联几个节点 就是结点的度
树的度: 结点度最高的度为树的度
叶子结点: 结点下面没子结点 度为0的结点
分支标点: 不是叶子结点的结点
内部结点:不是最顶层也是不是最底层的结点
父结点, 兄弟结点, 子结点都是相对的.
层次: 顶层为0层(有些定为1层)下面依次加一层
树的结点总数(n)=总度数(k)+1
1
/ | \
2 3 4
/ | \ \
5 6 7 8
/ \
9 10
树的遍历:
前序遍历: 根->最左子结点->再最左边(先访问根, 再访问子结点, 子结点, 可以看作一个子树)
后序遍历: 先子节点, 再根节点
层次遍历: 是分层一个一个来.
前: 1, 2, 5, 6, 7, 3, 4, 8, 9, 10
后: 5, 6, 7, 2, 3, 9, 10, 8, 4, 1
层: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
二叉树:
二叉树最多只能有两个结点. 二叉树分左子右子, 一般树不分.
满二叉树: 每个节点都是两个节点
完全二叉树: 如果一个二叉树有n层, n-1层是满树, 最后一层要从左到右排列.
特性:
1.二叉树第i层, 最多只能有2^(i-1)个结点(i>=1)
2.深度为k的二叉树最多有2^k-1个结点(k>=1)
3.对任何一棵二叉树, 如果其叶子结点数为n0, 度为2的结点数为n2, 则n0 = n2 + 1
4.如果一个完全二叉树的结点按层次编号.
1)如果i=1,则结点i无父结点, 是二叉树的根; 如果i > 1, 则父结点是 i/2 向下取整 ;
2)如果2i > n, 则结点i为叶子结点, 无左子结点; 否则, 其左子结点是结点2i;
3)如2i + 1 > n, 则结点i无右子叶点, 否则, 其右子结点是结点2i+1.
二叉树多一个中序遍历:先左再根再右
树与二叉树转换:一棵树转成等价的二叉树
任意结点的孩子结点转成二叉树的左子树结点, 兄弟结点转为二叉树的右子结点
画图时可以断开除最左边的结点, 然后水平连结点兄弟结点(共同父结点, 唐兄节点不连)
原来左边连线就是左结点, 先连成的是右结点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2009-02-18 Container(容器)