首页 > 编程知识 正文

二叉排序树转化为平衡二叉树,满二叉树和完全二叉树的关系

时间:2023-05-05 10:11:29 阅读:156021 作者:343

一、二叉树除最后一层没有任何子节点外,每层所有节点都有二叉树。 或者,在二叉树中,当各级节点数达到最大值时,该二叉树就是二叉树。 或者,如果一个二叉树的层数为k,并且节点总数为(2^k )-1,则用二叉树填充它。

二.完全二叉树

完全二叉树是一种高效的数据结构,完全二叉树由完全二叉树引导。 关于具有深度为k的n个节点的二叉树,只有各个节点在深度为k的满二叉树中与编号从1到n的节点一一对应时,才称为完全二叉树。

或者,如果将二叉树的深度设为h,则除了h层之外的其他各层(1~h-1 )的节点数都达到最大个数,第h层的所有节点连续集中在最左边的是完全二叉树。

性质:

设n0为度0的节点总数,即叶节点数,n1为度1的节点总数,n2为度2的节点总数,则如下。

n=n0 n1 n2 (其中n是完全二叉树的节点总数); 另外,因为度2的节点有2个子节点,度1的节点有1个子节点,根节点以外的节点都有父节点,

n=1 n1 2*n2; 从、的公式中消去n2,则n=2*n0 n1-1,在完全二叉树中中度1的节点数为0或1的可能性只有两种,因此可以得到n0=n/2或n0=(n 1 )/2。

简单计算一下,n0=n/2。 其中,如果n是奇数,则(n1=0)向上取整数。 n为偶数时(n1=1)。 可以根据完全二叉树的节点总数计算出叶子的节点数。

三、二叉排序树二叉排序树,又称二叉搜索树。

定义:

二叉树是空的树,或者是具有以下性质的二叉树。

)1)如果左子树不为空,则左子树所有节点的值小于其根节点的值;

)2)如果右部分树不为空,则右部分树的所有节点的值都大于其根节点的值;

)3)左、右子树也分别为二叉排序树;

(4)没有键值相等的节点。

四.平衡二叉树

二叉树(Balanced Binary Tree )又称AVL树(与AVL算法不同),是一种空树,具有左右两个子树的高度差绝对值在1以下,左右两个子树也是二叉树的性质。 该方案较好地解决了二叉搜索树退化为链表的问题,插入、搜索、删除的时间复杂度无论是最高还是最坏都保持在o(logn )。 但是,频繁旋转的话,插入和删除会牺牲o(logn )左右的时间,但与双叉检索树相比在时间上相当稳定

二叉树的平衡操作大部分与二叉树的搜索树相似,主要区别在于插入删除时平衡二叉树的平衡可能发生变化,只有从它们的插入点到根节点的路径上的节点平衡可能发生变化。 因为只有这些节点的部分树有可能发生变化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。