大家好,今天小编关注到一个比较有意思的话题,就是关于c语言平衡二叉树的问题,于是小编就整理了4个相关介绍c语言平衡二叉树的解答,让我们一起看看吧。
平衡二叉树的旋转规则?
LL。
插入结点F后,A结点左子树高度为3,右子树高度为1,平衡因子为3-1=2,这时我们需要对其进行右旋操作,那么我们得到右边以B为根节点的平衡树。 注意此时最小不平衡树的根节点A的BF为2,需要旋转的支点B的BF为1。
RR。
插入F结点后,A的BF变为-2,此时我们需要对以A为根节点的最小不平衡树进行左旋,得到右边的平衡树。 注意此时最小不平衡树的根节点A的BF为-2,需要旋转的支点C的BF为-1。
LR。
插入F后,A的BF变为2,此时我们需要对最小不平衡树A 进行右旋,但此时旋转支点B的BF为-1,与结点A的BF异号,这个时候如果直接右旋,旋转后的树仍然为不平衡树,所以我们需要先对B为根的子树进行左旋,得到中间的不平衡树,此时我们以E为旋转支点,显然其BF为1,与A的BF同号,可以直接对该树进行右旋,得到最后的平衡二叉树。
RL。
什么是平衡二叉树?
它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log2n),大大降低了操作的时间复杂度。
平衡二叉树最少有几个结点?
对于一棵平衡树,如果以NhNh表示为h时含有的最少结点数。有如下的规律:
N0=0,N1=1,N2=2;Nh=Nh−1+Nh−2+1
这里研究的是最小结点数,最多结点数自然是满二叉树时的,不必像最少结点这样需要递推分析。
最少结点的情况还可以从平衡因子看:所有非叶结点的平衡因子均为1。可以推论的是,均为-1也是最少结点的情况。
通常会围绕着最少结点,最大深度反复考察这个知识点。比如给定深度问最少需要多少个结点。或者给定结点数问最大能达到多少深度。
因此这个知识点可以形象化为深度是想达成的效果,越大越好,结点数是花费的成本,越小越好。
平衡二叉树深度公式?
***设Nh表示深度为h的平衡二叉树中含有的最少的结点数目。那么,N0=0,N1=1,N2=2,并且Nh=Nh-1+Nh-2+1。
根据公式先计算出N3
N3=2+1+1
计算出N4
N4=4+2+1
最后出结果
N5=7+4+1
这时候N5就等于12
N后面跟的数字就是深度
到此,以上就是小编对于c语言平衡二叉树的问题就介绍到这了,希望介绍关于c语言平衡二叉树的4点解答对大家有用。