说明:本笔记依照《王道论坛-数据结构》视频内容整理。
一、基本概念
树是 n(n≥0) 个结点的有限集合,n=0 时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:
(1)有且仅有一个特定的称为根的结点。
(2)当 n > 1时,其余结点可分为 m (m>0)个互不相交的有限集合T1、T2、……、Tm,其中每个集合本身又是一棵树,并且称为根节点的子树。
非空树特点:
- 有且仅有一个根结点
- 没有后继的结点称为“叶子结点”(或终端结点)
- 有后继的结点称为“分支结点”(或非终端结点)
- 除根结点外,任何一个结点都有且仅有一个前驱
- 每个结点可以有 0 个或多个后继
树是一种递归定义的数据结构。
二、结点之间关系描述
祖先结点:从一个结点出发,一直向上走,一直走到根结点为止,所经过的所有结点都是祖先结点。
子孙结点:从一个结点出发所有的分支都属于子孙结点。
双亲结点:一个结点的直接前驱结点。
孩子结点:一个结点的直接后继结点。
兄弟结点:前驱结点为同一个结点的结点。
堂兄弟结点:前驱的前驱是同一个结点的结点。
两结点之间路径:根节点到一个结点(只能从上往下)。
路径长度:根结点到一个结点经过几条边。
三、结点、树的属性描述
结点的层次(深度):从上往下数(默认从1开始)
结点的高度:从上往下数
树的高度(深度):总共多少层
结点的度:有几个孩子(分支)
树的度:各结点的度的最大值
四、有序树、无序树
有序树:逻辑上看,树中结点的各子树从左至右是有次序的,不能互换。
无序树:逻辑上看,树中结点的各子树从左至右是五次序的,可以互换。
五、树、森林
森林:由 m(m≥0)棵互不相交的树的集合。
六、树的性质
-
结点数 = 总度数 + 1
-
度为 m 的树和 m 叉树的区别(树的度 - 各结点的度的最大值、m 叉树 - 每个结点最多只能有 m 个孩子的树)
七、树的存储结构
1、双亲表示法(顺序存储)
2、孩子表示法(顺序+链式存储)
3、孩子兄弟表示法(链式存储)
八、森林和树转换