【发布时间】:2017-06-16 07:16:55
【问题描述】:
我曾尝试实现代码来实现平衡二叉搜索树的方式(蛮力),我发现(树的)有一个案例,似乎无法平衡。这棵树是
6
\
10
/
8
/ \
7 9
你可以很明显的发现这棵树的右边高度比它左边的高度大很多,所以我把树向左旋转'6'左右,那么新的树就会是
10
/
6
\
8
/ \
7 9
然后左边的高度远大于右边的高度,所以下一步我必须围绕节点'10'向右旋转(回到)树。
在平衡这棵树的同时,似乎必须有一个无限循环来围绕它的根节点旋转这棵树(向左、向右、向左、向右……等等)。有没有办法平衡这棵树?
【问题讨论】:
-
查看最大堆或最小堆。这可能会帮助您了解如何创建平衡的二叉树。
标签: binary-tree