我试图在课本上解决这个问题,但似乎无法完全理解:
-
确定这些元素的插入顺序将产生一个完美平衡的二进制搜索树。
-
元素是:{10,11,15,19,23,78,42,56,18,13,12,38,47}
我能够构造BST并正确地平衡它,但我不确定在构造树之前如何对元素进行排序,以确保树的平衡。
首先,我们对这些元素进行排序,然后开始构建平衡的BST。现在我们需要选择一个元素作为树的根,以确保树的平衡,所以我们从排序的元素中选择中间的元素。然后我们需要选择哪一个是左边的孩子。左边有两个排序的子数组——左边的一个和右边的一个。这里是分而治之,这两个数组都是原来问题的子问题。然后我们从左排序的子数组中选择中间元素作为左子节点,从右排序的子阵列中选择中间的元素作为右子节点,依此类推
因此,在构建树以保证平衡树之前,元素的顺序如下所示:
- 对元素进行排序
- 第一个元素是排序的元素中的中间元素
- 第二个元素是左排序数组中的中间元素
- 第三个元素是右排序数组中的中间元素
- 等等
对于您给出的元素,顺序为:
19、12、42、10、15、23、56、11、13、18、38、47、78