1.树的定义
树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有两个或两个以上的直接后继元素,树可以用来描述客观世界中广泛存在的层次结构关系。 输的定义如下:
(1)树是n(n>=0)个结点的有限集合,当n=0时称为空树;
(2)在任一非空树(n>0)中,有且仅有一个称为根的结点;
(3)其余结点可分为m(m>=0)个互不相交的有限子集T1,T2,T3,...Tm,其中,每个Ti又都是一棵树,并且称为根结点的子树。
如下图1-1所示,为树的结构示意图。
图1-1 某树的结构图
2.树的基本概念
(1)双亲、孩子、兄弟。结点的子树的根称为该结点的孩子;相应地,该结点称为子结点的双亲。具有相同双亲的结点互为兄弟。
(2)结点的度。一个结点的子树的个数记为该结点的度。例如图1-1中,A的度为3,B的度为2,C的度为0,D的度为0。
(3)叶子结点。叶子结点也称为终端结点,指度为0的结点。例如,图1-1中,E、F、C、D都是叶子结点。
(4)内部结点。度不为0的结点,也称为分支结点或非终端结点。除根节点以外,分支结点也称为内部结点。例如,图1-1中,B为内部结点。
(5)结点的层次。根为第一层,根的孩子为第二层,依此类推,若某结点在第i层,则其孩子结点在第i+1层。例如,图1-1中,A在第1层,B、C、D在第2层,E、F在第3层。
(6)树的高度。一棵树的最大层数记为树的高度或深度。例如,图1-1中的书深度为3。
(7)有序树和无序树。若将书中结点的各子树看成是从左到右具有次序的,即不能交换,则称该树为有序树,否则称为无序树。
3.二叉树的定义
二叉树是n(n>=0)个结点的有限集合,它或者是空树,或者是由一个根节点及两颗不相交的且分别称为左、右子树的二叉树所组成。二叉树结点的最大度为2。
4.二叉搜索树
一棵二叉搜索树满足下面条件:
(1)所有左分支的值都小于本结点的值;
(2)本结点的值小于所有右分支的值。
如图4-1所示,就是一棵二叉搜索树: