数据结构 树的基本概念
7、树和二叉树
7.1、树的基本概念
概念:
空树:结点数为0的数
非空树的特性:
- 有且仅有一个根结点
- 没有后继的结点称为"叶子结点"(或终端结点)
- 有有后继的结点称为"分支结点"(或非终端结点)
- 除了根结点外,每个结点都有且仅有一个前驱
- 每个结点可以有0个或者多个后继
属性描述:
- 结点的层次(深度):从上往下数
- 结点的高度:从下往上数
- 数的高度(深度):总共有多少层
- 结点的度:有几个孩子(分支)
- 树的度:各结点度的最大值
有序树:逻辑上看,树中结点的各子树从左至右是有次序的,不能交换
无序树:逻辑上看,树中结点的各子树从左至右是无次序的,可以交换
森林:是m(m>=0)棵互不相交的树的集合
树的常考性质1
结点数 = 总度数 + 1
树的常考性质2
树的度:各个结点的度的最大值 m叉树:每个结点最多只能有m个孩子的树
树的常考性质3
度为m的树第i层至多有个结点(i>=1)
树的常考性质4
高度为h的m叉树至多有个结点
总共有:
树的常考性质5
高度为h的m叉树至少有h个结点
高度为h,度为m的树至少有个结点
树的常考性质6
具有n个结点的m叉树的最小高度为
答:最小高度就所有结点有m个孩子
7.2、二叉树
二叉树是n(n >= 0)个结点的有限集合
- 空二叉树,即n=0
- 有一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树分别又是一颗二叉树
特点:
- 每个结点至多有两颗子树,
- 左右子树不能颠倒(二叉树是有序数)
几个特殊二叉树
-
满二叉树。一颗高度为h,且含有个结点的二叉树
特点:
- 只有最后一层有叶子结点
- 不存在度为1的结点
- 按层次从1开始编号,结点为i的左孩子为,右孩子为,结点为i的父节点为
-
完全二叉树。当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应。
特点:
- 还有最后两层可能出现叶子结点
- 最多只有一个度为1的结点
- 按层次从1开始编号,结点为i的左孩子为,右孩子为,结点为i的父节点为
- 为分支结点,为叶子结点
-
二叉排序树。一颗二叉树或者空二叉树,或者是具有如下性质的二叉树
- 左子树的上所有结点的关键字均小于根结点的关键字
- 右子树的上所有结点的关键字均大于根结点的关键字
- 左子树和右子树又各是一颗二叉排序树
-
平衡二叉树。树上任一结点的左子树和右子树的深度之差不超过1
二叉树的常见考点
-
设非空二叉树中度为0、1和2的结点数分别为,则
解答:
设总的结点数为n
所以:
-
具有n个(n>0)结点的完全二叉树的高度h为$\left \lceil log_2(n+1) \right \rceil \left \lfloor log_2(n) \right \rfloor + 1$
推导:
n个结点:h层最多为,h-1层最多有
所以:
所以:
推导:
n个结点:h+1层至少有个结点;h层至少有有个结点
所以:
所以:
-
对于完全二叉树,可以由的结点数n推出度为0、1和2的结点个数
完全二叉树最多只有一个度为1的结点,
即:
由于 ==> 为奇数
所以:
若完全二叉树有个(偶数)个结点,则必有
若完全二叉树有个(奇数)个结点,则必有
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)