写在前面
之前讲的链表,栈,队列等都是线性存储结构,都是一对一的关系。而树是具有一对多关系的数据结构。比如我们经常说的湖北省武汉市,湖南长沙的一个类图,就类似于一颗倒转的树。
什么是树
树是一种数据结构,由n个节点构成的具有层次关系的有限集合。
树的基本术语
节点:树中的每一个数据元素都是节点(A,B…)
节点的度:节点的子树个数(A的子树为B和C)
树的度:树中所有节点最大的度(树A和树C的度都是2)
叶子节点:度为0的节点(D,E,F)
节点的层次:树的根开始,树根所在的层为第一层,根的子节点所在的层为第二层(A第一层,BC第二层)
有序树和无序树:子树有左右顺序之分 (如左边的小于右边),反之则为无序树
树的特点
- 子树是不相交的
- 除了根节点之外,每个节点有且只有一个父节点
- 一个又N个节点构成的树只有N-1条边
什么是二叉树
树中的节点的度不超过2的有序树。
二叉树的特点:
-
二叉树中,第i层的节点数最多为2i-1
-
深度为k的二叉树最多有2k-1个节点
-
对于任意二叉树,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1,
即度为0的节点n0,永远比度为2的节点 n2多一个。
证明:设度为0的节点有n0个ÿ