构建平衡二叉树的例题,二叉平衡树的特点
2010年计算机专业统考的一题关于平衡二叉树
插入48之后属于右左双旋转的情况,按照图示的方法先做右单旋转,再做左单旋转
右单旋转:以37为轴,53顺时针旋转(向下),原本是37左孩子的48成为53的左孩子
24的右孩子由53变为37
左单旋转:仍然以37为轴,24逆时针旋转(向下),成为37的左孩子
(如有误敬请指正)
序列构造平衡二叉树,给出构造过程
首先插入49,为根
接着38,插入在49的左子树,没有旋转
接着65,插入在49的右子树,没有旋转
然后97,插入在65的右子树,没有旋转
下面76,插入在97的左子树,做先右后左的双旋转:
后面的13,插入在38的左子树,没有旋转
接着的27,插入在13的右子树,做先左后右的双旋转:
最后再插入50在65的左子树,没有旋转,得到最终的平衡二叉树如下:
数据结构,,平衡二叉树题,大家看看我做的对不对
对,完全正确,从插入的48往根回溯,到30就不平衡了,因此要进行向左的单旋转
数据结构,第六题第2小题怎样构造平衡二叉树(出现相同关键字了)
这个问题,如果参考教材有规定就好处理。大多数教材,对二叉排序树来讲,是不可以有相同的关键字的。如果没有规定,可以这样去考虑,在插入第二个77时,不插入因为已存在77.这样就好处理了。对于第二问,同样平衡二叉树首先必须是二叉排序树。结果为:
67
/ \
27 87
/ \ / \
17 47 77 97
/ / \
07 37 57
【讨论】数据结构平衡二叉树题求解?
平衡二叉树,属于二叉排序树(左子树所有节点均小于它根节点的值,而右子树相反),所以构造树的时候按照二叉排序树,不断插入,就会发现插入51时,出现不平衡。
构造平衡二叉树
从结点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变成其右子树,不过现在没有)
最终结果: