构造平衡二叉树

作者&投稿:赧乔 (若有异议请与网页底部的电邮联系)
构造平衡二叉树~

平衡二叉树(AVL)
那对图 1 进行下改造,把数据重新节点重新连接下,图 2 如下:

图 2 可以看到以下特性:
1. 所有左子树的节点都小于其对应的父节点(4,5,6)<(7);(4)<(5);(8)< (9);
2. 所有右子树上的节点都大于其对应的父节点(8,9,10)>(7);(6)>(5);(10)>(9);
3. 每个节点的平衡因子差值绝对值 <=1;
4. 每个节点都符合以上三个特征。
满足这样条件的树叫平衡二叉树(AVL)树。
问:那再次查找节点 5,需要遍历多少次呢?
由于数据是按照顺序组织的,那查找起来非常快,从上往下找:7-5,只需要在左子树上查找,也就是遍历 2 次就找到了 5。假设要找到叶子节点 10,只需要在右子树上查找,那也最多需要 3 次,7-9-10。也就说 AVL 树在查找方面性能很好,最坏的情况是找到一个节点需要消耗的次数也就是树的层数, 复杂度为 O(logN)
如果节点非常多呢?假设现在有 31 个节点,用 AVL 树表示如图 3:

图 3 是一棵高度为 4 的 AVL 树,有 5 层共 31 个节点,橙色是 ROOT 节点,蓝色是叶子节点。对 AVL 树的查找来看起来已经很完美了,能不能再优化下?比如,能否把这个节点里存放的 KEY 增加?能否减少树的总层数?那减少纵深只能从横向来想办法,这时候可以考虑用多叉树。

平衡二叉树:它的左右子树都是平衡二叉树,且两者深度之差不超过1
二叉树的本质就是一种不错的算法结构.
平衡二叉树就是为了将查找的时间复杂度保证在O(logN)范围内....

从结点48向根回溯,依次计算各个结点的平衡因子,48的为0,37为-1(左减去右),53为+1,24为-2,产生不平衡,从24往来路看2个结点:53、37,路径形态为先向右走再向左走,于是24、53和37进行先右后左双旋转:

第一步:将37、53向右旋转,37上,53变为37的右子树,48交给53成为53的左子树

第二步:将24、37向左旋转,37上,24变成37的左子树(如果37原来有左子树,就交给24变成其右子树,不过现在没有)

最终结果:



平衡二叉树(AVL)

那对图 1 进行下改造,把数据重新节点重新连接下,图 2 如下:

图 2 可以看到以下特性:

1. 所有左子树的节点都小于其对应的父节点(4,5,6)<(7);(4)<(5);(8)< (9);

2. 所有右子树上的节点都大于其对应的父节点(8,9,10)>(7);(6)>(5);(10)>(9);

3. 每个节点的平衡因子差值绝对值 <=1;

4. 每个节点都符合以上三个特征。

满足这样条件的树叫平衡二叉树(AVL)树。

问:那再次查找节点 5,需要遍历多少次呢?

由于数据是按照顺序组织的,那查找起来非常快,从上往下找:7-5,只需要在左子树上查找,也就是遍历 2 次就找到了 5。假设要找到叶子节点 10,只需要在右子树上查找,那也最多需要 3 次,7-9-10。也就说 AVL 树在查找方面性能很好,最坏的情况是找到一个节点需要消耗的次数也就是树的层数, 复杂度为 O(logN)

如果节点非常多呢?假设现在有 31 个节点,用 AVL 树表示如图 3:

图 3 是一棵高度为 4 的 AVL 树,有 5 层共 31 个节点,橙色是 ROOT 节点,蓝色是叶子节点。对 AVL 树的查找来看起来已经很完美了,能不能再优化下?比如,能否把这个节点里存放的 KEY 增加?能否减少树的总层数?那减少纵深只能从横向来想办法,这时候可以考虑用多叉树。




常见的树有哪些
所以就在「章」字旁加一个木字做为树名,您觉得这个说法如何呢?。 樟树是常绿乔木,它的常绿不是不落叶,而是春天新叶长成后,去年的老叶才开始脱落,所以一年四季都呈现绿意盎然的景象...樟树的小花非常独特,外围不易分辨出花萼或花瓣的花被片有6片,中心部位有9枚雄蕊,每3枚排成1轮.树皮有细致的深沟纵裂纹。

平衡二叉树的作用
这同时也会造成树的平衡性受到破坏,提高它的操作的时间复杂度。平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其...

平衡树最少结点的数量是?
在节点最少的情况下,左右子树的高度差1,则总节点数S(n)=S(n-1)+S(n-2)+1。初始值:S(1) = 1,S(2) = 2。可以推出S(3) = 4,S(4) = 7,S(5) = 12,S(6) = 20,S(7) = 33,S(8) = 54。高度为8的平衡二叉树最少结点数是54 如果高度比较大的树,可以根据...

8层高的平衡二叉树最少有多少个结点?
在节点最少的情况下,左右子树的高度差1,则总节点数S(n)=S(n-1)+S(n-2)+1。初始值:S(1) = 1,S(2) = 2。可以推出S(3) = 4,S(4) = 7,S(5) = 12,S(6) = 20,S(7) = 33,S(8) = 54。高度为8的平衡二叉树最少结点数是54 如果高度比较大的树,可以根据...

高度为8的平衡二叉树,至少有几个节点
在节点最少的情况下,左右子树的高度差1,则总节点数S(n)=S(n-1)+S(n-2)+1。初始值:S(1) = 1,S(2) = 2。可以推出S(3) = 4,S(4) = 7,S(5) = 12,S(6) = 20,S(7) = 33,S(8) = 54。高度为8的平衡二叉树最少结点数是54 如果高度比较大的树,可以根据...

平衡二叉树的旋转是什么?
平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log(n)),大大降低了操作的时间复杂...

襄城县13419913665: 平衡二叉树(电脑术语) - 搜狗百科
藩例半水: 平衡二叉树(AVL) 那对图 1 进行下改造,把数据重新节点重新连接下,图 2 如下: 图 2 可以看到以下特性: 1. 所有左子树的节点都小于其对应的父节点(4,5,6)<(7);(4)<(5);(8)< (9); 2. 所有右子树上的节点都大于其对应的父节点(8...

襄城县13419913665: 依次插入1,2,3,5,4,并由空树构成一棵平衡二叉树,画出该平衡二叉树形成过程及其中序线索二叉树. -
藩例半水:[答案] 总之,依次插入相关值,插入1 和2,然后插入3,该树不平衡,调整 1 \ 2 \ 3 调整为 2 / \ 1 3 然后插入 5 2 / \ 1 3 \ 5 然后插入 4 2 / \ 1 3 \ 5 / 4 不平衡,调整 2 / \ 1 4 / \ 3 5

襄城县13419913665: 序列构造平衡二叉树,给出构造过程 对序列(49,38,65,97,76,13,27,50),构造平衡二叉树,给出构造过程 -
藩例半水:[答案] 首先插入49,为根接着38,插入在49的左子树,没有旋转接着65,插入在49的右子树,没有旋转然后97,插入在65的右子树,没有旋转下面76,插入在97的左子树,做先右后左的双旋转:后面的13,插入在38的左子树,没有旋转...

襄城县13419913665: 数据结构,将下列序列构造(55,31,11.37,46,73,63,2,7)平衡二叉树? -
藩例半水:[答案] 1、空树,插入55,为根,无旋转 2、插入31,为55左子树,无旋转 3、插入11,为31左子树,发生向右的单旋转,结果31根、11左子树、55右子树 4、插入37,为55左子树,无旋转 5、插入46,为37右子树,发生先左后右双旋转,结果46为31的...

襄城县13419913665: 构造平衡二叉树的目的是什么以及什么是平衡二叉树
藩例半水: 平衡二叉树:它的左右子树都是平衡二叉树,且两者深度之差不超过1二叉树的本质就是一种不错的算法结构.平衡二叉树就是为了将查找的时间复杂度保证在O(logN)范围内....

襄城县13419913665: 18,22,19,15,30,35,20,42,16构造平衡二叉树数据结构问题 -
藩例半水:[答案] 应该重复问了,重复答一次 19 / \ 16 30 / \ / \ 15 18 22 35 / \ 20 42

襄城县13419913665: 【讨论】数据结构平衡二叉树题求解? 1、由元素(27、16、75、38、51)构造平衡二叉树,则首次出现的最小不平衡子树的根(即离插入结点最近且平衡... -
藩例半水:[选项] A. 27; B. 38; C. 51; D. 75. 我看了半天,都不知道这道题从哪里下手,而且不知所云.还请高人指示.[]

襄城县13419913665: 什么叫做平衡二叉树? -
藩例半水: 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等. 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列 1是根节点 F(n-1)是左子树的节点数量 F(n-2)是右子数的节点数量.

襄城县13419913665: 27,16,73,35,42构造平衡二叉树.怎么构建、、然后所做的平衡旋转都是什么? -
藩例半水: 首先按照这个顺序27,16,73,35,42输入,得到如下二叉排序树27 16 733542不平衡最小子树的根节点是73 所以要旋转以73为根结点的子树使得整棵树平衡 观察这棵子树可知 这是一个LR型的子树 需要对其进行两次旋转先L软后R L旋转得到734235 R旋转得到4235 73所以整合整棵树得到平衡二叉树为2716 4235 73

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网