(三)树
定义:树 是n(n >= 0)个结点的有限集合,当n = 0时称为空树。 在任一非空树中,有且仅有一个称为根的 结点,其余结点可分为m(m >= 0)个互不相交的有限子集T1,T2,……,Tm,其中,每个Ti又都是一棵树,并且称为根节点的子树。
树中的某个结点,它最多只与上一层的一个结点有直接的关系,而与其下一层的多个结点有直接关系。
树的基本概念:(a)双亲、孩子和兄弟。(b)结点的度:一个结点的子树的个数记为该结点的度。(c)叶子结点。(d)内部结点。(e) 结点的层次:根为第一层。(f)数的高度:数的最大层数记为数的高度或深度。(g)有序(无序)树:若树中结点的各子树看成是从左到右具有次序的,即不能交换,则称为有序树,否则则为无序树。
1、 二叉树
定义:二叉树是n(n >= 0)个结点的有限集合,它或者是空树,或者是由一个根结点及两棵不相交的且分别称为左、右子树的 二叉树所组成。 二叉树同样具有递归性质。
树与二叉树最主要的区别是:二叉树中结点的子树要区分左子树和右子树,即使在结点只有一棵 子树的情况下,也要明确指出该子树是左子树还是右子树。另,二叉树结点最大度为2,而树中不限制结点的度数。
性质: (a)二叉树第i层(i >= 1)上最多有2 ^(i -1)个结点。(b)高度为k的二叉树最多有2^k - 1 个结点(k >= 1)。 (c)对于任何一棵二叉树,若其终端结点树为n0,度为2 的结点数为n2,则n0 = n2 + 1。(d)具有n哪个结点的完全二叉树的深度为。
如果高度为k的二叉树有2^k - 1 个结点,则称为满二叉树。深度为k,有n个结点的二叉树,当且仅当每个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。
存储结构:(a)顺序存储结构:用一组地址连续的存储单元存储二叉树中的结点,必须把结点排成一个 适当的线性序列,并且结点在这个序列中的相互位置能反映出结点之间的逻辑关系。完全 二叉树采用顺序 结构即简单又节省空间,对于一般的二叉树,则不宜采用顺序存储结构。(b)链式存储结构:由于二叉树 的结点中包含有数据元素、左子树的根、右子树的根及双亲等信息,因此可以用三叉链表或二叉链表来存储二叉树,链表的头