给出以下排序整数:1 2 3 4 5 6 7 8.如何构建平衡搜索树?
如果有人能够解释而不提供代码示例,我将非常感激。
这不是家庭作业。我正在修改考试。
如果将上面的值放入平衡树中,树是否应该与下面的类似?
5
4 6
3 7
2 8
1
答案 0 :(得分:4)
最简单的方法可能如下:
由于您的整数列表已经排序,您只需在中间选择值即可找到均值(并且在分区时无需移动平均值周围的任何值)。只需将列表分为两部分即可获得子树。
最终树取决于您选择哪个节点作为中间。这是一个例子:
4
2 6
1 3 5 7
8
答案 1 :(得分:0)
您可以考虑自下而上构建。
你将有一个根。如果树中只有一个元素,则这是根。根中的每个元素都将引用树中的另一个两个节点(二叉树)。一个元素比一个大于自身的元素,另一个元素比一个小于它自身的元素。
因此,如果您的树只有第一个并且您要插入数字两个,则它将作为叶子插入,并且根中的“大于”的引用将指向节点2.
当您插入值3时,您必须将其插入节点2的“大于”的引用中。但是等等,这将使树不平衡,因此您必须更正此值。您必须将节点2设置为根并指向“小于”中的节点1和“大于”引用中的数字3。
希望这能让你更好地理解它。
最终结果取决于您插入元素的顺序。但是,如果你插入像1,2,3,4,5 ...树应该是这样的:
2
1 3
然后
3
2 4
1
之后
3
2 4
1 5
等等。插入这样的节点时的例子并不是那么好,但如果你按顺序思考:4,2,6,1,3,5那么结果应该是这样的:
4
2 6
1 3 5