版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lu_LLLR/article/details/80228622
1、树的定义
树是一种
非线性的数据结构。
树是n(n>=0)个结点的有限集,在任意一棵非空树中:
1)有且仅有一个特定的被称为
根(root)的结点
2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的
子树(subTree)
3)每棵子树也是由唯一的根结点和若干棵互不相交的子树组成的
4)树的结点数目可以为0,当为0时,这棵树称为一棵
空树
2、树的基本术语
1)结点:结点不仅包含数据元素,而且包含指向子树的分支
2)结点的度:结点拥有的子树个数或者分支的个数
3)树的度:树中各节点度的最大值
4)叶子结点:又叫做
终端结点,指度为0的结点
5)非终端结点:又叫做
分支结点
,指度不为0的结点
6)孩子:结点的子树的根
7)双亲:与孩子的定义对应
8)兄弟:同一个双亲的孩子之间互为兄弟
9)祖先:从根到某结点的路径上的所有结点
10)子孙:以某结点为根的子树中的所有结点,都是该结点的子孙
11)层次:从根开始,根为第一层,根的孩子为第二层,根的孩子的孩子为第三层,以此类推
12)树的高度(深度):树中结点的最大层次
13)结点的深度和高度:
1、结点的深度是从根结到该结点路径上的结点个数;
2、 从某结点往下走可能到达多个叶子结点,对应了多条通往这些叶子结点的路径,其中最长的那条路径的长度即为该结点在树中的高度
3、根结点的高度为树的高度
14)堂兄弟:双亲在 同一层的结点互为堂兄弟
15)有序树:树中结点的子树从左到右是有次序的,不能交换,这样的树叫作有序树
16)无序树:树中结点的子树没有顺序,可以任意交换,这样的树叫作无序树
17)丰满树:即为理想平衡树,要求除最底层外,其他层都是满的
18)森林:若干棵互不相交的树的集合
3、树的存储结构
1)顺序存储结构
树的顺序存储结构中最简单直观的是双亲存储结构
2)链式存储结构
树的链式存储结构最常用的有以下两种:
孩子存储结构:实质上就是图的邻接表存储结构,树就是一种特殊的图
孩子兄弟存储结构:与树和森林与二叉树的相互转换关系密切