1. 树的简介
a. 树的定义
一种非线性结构,树是N(N>=0)个结点的有限集合,N=0则称为空树。
1). 有且仅有一个特定的称为根的结点
2). 当N>1时,其余结点可分为m个互不相交的有限集合T1,T2,T3, …, Tm,其中每一个集合本身又是一颗树,并且称为根结点的子树。
b. 基本术语
度:树中一个结点的子结点个数称为该结点的度,树中结点的最大度数称为树的度。
分支节点与叶子节点:度大于1的称为分支结点,度为0的称为叶子节点(终端结点)。树的高度是树中结点最大层数。
有序树与无序树: 树中结点的子树从左到右是有次序的,不能交换,这样的树叫做有序树。反之称为无序树。
路径和路径长度: 树中2个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
森林: 森林是m(m>=0)颗互不相交的树的集合。
c. 树的基本性质
1). 树中的结点等于所有结点的度数加1。
2). 度为m的树中第i层上至多有m^(i-1)个结点(i>=1)。
3). 高度为h的m叉树至多有(m^h - 1)/(m-1)个结点。
4). 具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]。
2.二叉树简介
a. 二叉树的定义
一种特殊的树结构,每个结点最多2颗子树,其次,二叉树的子树有左右之分,次序不可任意颠倒。
b. 特殊的二叉树(这些术语比较重要点)
满二叉树: 一颗高度为h,并且含有2^h - 1个结点的二叉树称为满二叉树,即树中的每一层的结点都满了。(编号为i的结点,如果有双亲,其双亲为i/2。左孩子为2i,右孩子为2i+1)
完全二叉树:设一个高度为h,有n个结点的二叉树,当且仅当其每一个结点都与高度为h的满二叉树中编号为1….n的结点一一对应,称为完全二叉树。即最后一层可不满,到须从左至右。故叶子结点只可能出现在下两层中。
二叉排序树: 一颗二叉树,左子树上的所有关键点均小于根节点的关键字,右子树上的所有关键字均大于根结点的关键字。左右子树又各是一颗二叉排序树。
平衡二叉树:树上任一结点的左子树和右子树的深度之差不超过1。
c. 二叉树的性质
1). N1+2N2+1(度) = N0+N1+N2
2). 非空二叉树上第K层上至多有2^(k-1)个结点
3). 高度为H的二叉树至多有2^H -1 个节点
4). 具有N个结点的完全二叉树的高度为log(N+1)
d. 储存方式
1). 顺序存储结构:使用数组来表示二叉树时,为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空结点让其每个结点与完整二叉树上的结点相对照,再存储到一维数组的相应分量中。
2). 链式存储结构:正因为上述有许多缺点,所以链式是比较常用的一种方式。data数据域,lchild左指针域,rchild右指针域。