树——(1)综述:二叉树,线索二叉树,二叉搜索树,B-/B+树,AVL树,红黑树

来源:互联网 发布:计算机二级考试软件 编辑:程序博客网 时间:2024/05/29 15:10
tree

1. 定义

树是n(n>=0)个结点的有限集。在任意一棵非空树中:

    (1)有且仅有一个特定的称为根的结点;

   (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...Tm,其中每一个集合本身又是一棵树,并且称为根的子树.

2. 树的基本概念:

度:结点拥有的子树数称为结点的度。

叶子(终端结点):度为0的结点称为叶子或终端结点。

分支结点(非终端结点):度不为0的结点称为非终端结点或分支结点。

层:1(根节点),2,....,高度

高度:树的最大层数

深度:高度(注:有些书籍认为深度=高度-1)


3. 树的分类

二叉树

线索二叉树

二叉搜索树

B-/B+树

AVL树

红黑树

3.1 二叉树

3.1.1 定义

二叉树:每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒

满二叉树:每个节点的度只能为0或2,且所有叶子节点在同一层,如图(a)

完全二叉树:每一个存在的节点都和同深度的满二叉树一一对应。如图(b)


3.1.2 二叉树的性质

(1)在二叉树的第i层上至多有2的i-1次方个结点(i>=1)。      

层数:i(i>=1), 第i层的结点数:mi

mi <= 2^( i - 1 )

(2)深度为k的二叉树至多有2的k次方减1个结点(k>=1)。

深度:k, 结点数:m

m <= 2^k - 1    


(3) 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。   

叶子结点数:n0 ;   度为2的结点数:n2

n0 = n2 + 1

(4)具有n个结点的完全二叉树的深度为|log2n|+1      

完全二叉树:结点数——n ; 深度 —— k

k = [log2n] +1

(5)如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1=<i=<n)有:
(1)如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则双亲PARENT(i)是结点i/2
(2)如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子LCHILD(i)是结点2i
(3)如果2i+1>n,则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1

3.1.3 遍历

二叉树的遍历方法,包括:层次遍历, 先序遍历(VRL),中序遍历(RVL),后序遍历(RLV)


3.2 线索二叉树

利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。

中序线索树,如图(a)无头节点; (b)有头节点





原创粉丝点击