【问题标题】:Creating a binary search tree with the smallest depth创建具有最小深度的二叉搜索树
【发布时间】:2016-07-12 10:42:54
【问题描述】:

我有从 1 到 31 的数字,我需要创建一个具有最小深度的数字的二叉搜索树。我正在考虑除以 31/2 并将 16 作为我的根。之后除以 16/2 并插入 8,但这似乎不起作用。是否有一种算法可以知道以什么顺序插入数字以便树可以具有最小的深度?

【问题讨论】:

  • 有些算法允许树平衡更适合这种情况。这样插入顺序无关紧要,但树是最小的。 AVL 很接近,内部路径缩减树甚至更好(保证最低限度),但可能需要更多时间。
  • 大部分无关紧要:31/2 应该给根 15,而不是 16。

标签: c++ algorithm binary-search-tree depth


【解决方案1】:

如果您有数字 1–31、31 个数字,您希望根的左边有 15 个数字,右边有 15 个数字。
所以根是 16(不是 31/2,而是 31/2 + 1)。

重复相同的过程,左子树有 15 个元素,因此您希望该子树的每一侧都有七个数字。
所以左子树的根是 8(即 15/2 + 1;这里有一个模式)。
类似的计算给出了右子树的根。

等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多