【问题标题】:Order of insertion of elements that will result in a perfectly balanced Binary Search Tree?元素的插入顺序将导致完美平衡的二叉搜索树?
【发布时间】:2014-02-21 00:54:03
【问题描述】:

我正在尝试在教科书中解决这个问题,但似乎无法完全理解:

  • 确定这些元素的插入顺序 将产生一个完美平衡的二叉搜索树。

  • 元素为:{10, 11, 15, 19, 23, 78, 42, 56, 18, 13, 12, 38, 47}

我能够构建 BST 并正确平衡它,但我不确定在构建树之前如何对元素进行排序以保证平衡树。

【问题讨论】:

  • 提示:如果您拍摄了正确的插入顺序,然后倒退了影片会怎样?

标签: tree binary-search-tree


【解决方案1】:

首先,我们对这些元素进行排序,然后开始构建平衡的 BST。现在我们需要选择一个元素作为树的根,以保证树的平衡,所以我们从排序的元素中选择中间的元素。然后我们需要选择哪一个是左孩子。左边有两个排序的子数组——左边一个,右边一个。这里是分治法,这两个数组是原问题的子问题。然后我们从左排序子数组中选择中间元素作为左子节点,从右子数组中选择中间元素作为右子节点,以此类推。

所以在构造树之前元素的顺序来保证平衡树的确定如下:

  • 对元素进行排序。
  • 第一个元素是已排序元素的中间元素。
  • 第二个元素是左排序数组的中间元素。
  • 第三个元素是右排序数组的中间元素。
  • 等等。

对于你给出的元素,顺序是:
19、12、42、10、15、23、56、11、13、18、38、47、78

【讨论】:

  • 很棒的答案!谢谢你:)
  • 我必须做一个非常相似的任务,但是,我们的树最终需要是左派的(叶子从左到右,没有间隙)。有没有一种简单的方法可以将您描述的方法用于我的作业?
猜你喜欢
  • 2012-12-10
  • 2015-07-24
  • 1970-01-01
  • 2011-12-18
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
相关资源
最近更新 更多