您的位置:首页 > 理论基础 > 数据结构算法

数据结构---二叉树总结

2014-04-13 15:01 190 查看


(1)二叉树:二叉树是n(n>=0)个结点的有限集合,该集合或为空集,或者由一个根结点和两棵互不相交的分别成为根结点的左子树和右子树的二叉树组成。
深度——二叉树的层数,就是深度。

性质:1、在二叉树的i层最多有2i-1个结点。

2、一棵深度为k的树最多有2k-1结点。
3、二叉树叶子结点与度为2的结点n0=n2+1.证明性质3:设总结点数n=
n0+n1+n2, 分支线数=n-1= n1+2n
(2)完全二叉树:

完全二叉树——若设二叉树的高度为h,除第
h 层外,其它各层 (1~h-1)
的结点数都达到最大个数,第 h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

性质:1、具有n个结点的完全二叉树的深度为int(log2n)+1

2、判断一个完全二叉树的父结点和子结点

有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:

若I为结点编号则如果I>1,则其父结点的编号为I/2;

如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;

如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。

(3)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

(4)计算有关K叉树的结点问题,用到该性质:树的总结点-1=树的分支线数=K*nK+(K-1)*nK-1+
……1*n1.也就是说有nK个度为K的结点,n1个度为1的点,可以根据该性质求一棵树中度为0的点,也就是叶子结点。

(5)二叉树的遍历:前序遍历、中序遍历和后序遍历。

(6)二叉排序树(二叉查找树):左结点小于根结点,右结点大于根结点,所以二叉排序树是已经相当于中序遍历。只要给定前序遍历或者是后序遍历就可以恢复。

般的二叉搜索树(Binary Search Tree),其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度(O(log2n))同时也由此而决定。但是,在某些极端的情况下(如在插入的序列是有序的时),二叉搜索树将退化成近似链或链,此时,其操作的时间复杂度将退化成线性的,即O(n)。我们可以通过随机化建立二叉搜索树来尽量的避免这种情况,但是在进行了多次的操作之后,由于在删除时,我们总是选择将待删除节点的后继代替它本身,这样就会造成总是右边的节点数目减少,以至于树向左偏沉。这同时也会造成树的平衡性受到破坏,提高它的操作的时间复杂度。

(7)平衡二叉搜索树(Balanced
Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log2n),大大降低了操作的时间复杂度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: