我试图实现代码来实现平衡二叉搜索树的方式(蛮力),并且我发现有一个(树的)情况,它似乎不能平衡。树是这个二叉树可以平衡吗?
6
\
10
/
8
/\
7 9
可以很明显的发现,这个树的右侧高度比左高度大得多,所以我向左旋转周围的树“6”,那么新的树会
10
/
6
\
8
/\
7 9
然后它变成左边的高度比右边的高度大得多,所以在下一步中我必须向右旋转(返回)节点'10'周围的树。
在平衡此树时,似乎必须有一个无限循环来绕着它的根节点旋转此树(旋转左,右,左,右...等等)。有没有解决这个树的解决方案?
查看最大堆或最小堆。这可能会帮助你学习如何创建一个平衡的二叉树。 – denis