树就是一种非线性的数据结构,存储的是具有“一对多”关系的数据元素的集合。类似现实生活中的树(倒置的树),所以称这种存储结构为“树型”存储结构,可以用于保存组织架构、图书目录等数据。
树(tree
)是 n(n≥0)
个节点的有限集。当n=0
时,称为空树。
树的节点
树的结点:使用树结构存储的每一个数据元素都被称为“结点”。如下图,数据元素 1
2
3
都是树中的一个结点;而节点又根据不同的条件被分为根节点、子节点、叶子节点三种;我们可以根据下图来理解各种节点:
- 根节点:节点1是根节点(
root
),在非空树中,根节点就是没有父节点的节点,并且是唯一的; - 子节点:节点2、节点3是根节点的子节点,简单来说,就是与根节点直接相连的那些节点;
- 叶子节点:节点5、节点6、节点7、节点8是树的末端,没有子节点,被称为叶子节点(
leaf
); - 子树:以一个节点的子节点为根节点形成的就树称为该节点的子树,图中虚线部分,是根节点1的其中一个子树;
有关树的度和层次(如下图)
- 节点的度 :对于一个结点,拥有的子树个数(结点有多少分支)称为结点的度(
Degree
);例如,根结点A
下分出了3
个子树,所以,结点A
的度为3
。
- 树的度:一棵树的度是树内各节点的度的最大值;例如,所有结点的度的最大值为
3
,所以,整棵树的度的值是3
。 - 节点层次:从一棵树的树根开始,树根所在层为第一层,根的子结点所在的层为第二层,依次类推;例如:
A
结点在第一层,B、C、D
为第二层,E、F、G、H、I、J
在第三层,K、L、M
在第四层。 - 树的高度 :一棵树的高度是树中结点所在的最大层次,也就是这棵树的叶子节点所在的层数。树的高度,也被称为树的深度;例如:树的高度为
4
。