将二进制最小堆转换为二进制搜索树

时间:2012-09-14 22:30:12

标签: algorithm heap binary-search-tree

  

可能重复:
  Convert a maximum heap to a binary search tree

尽可能高效地将最小堆转换为二进制搜索树,而不使用额外的空间。 (允许递归)。

这个问题一直让我发疯。 必须是一种使用min-heap属性比暴力更有效地执行此操作的方法。例如,给定这个min-heap:

    [1, 7, 6, 9, 8, 21, 15] =

                1
             /     \  
           7        6
          / \      / \
         9   8   21   15

我们立即知道,根据定义,根将成为我们的二叉搜索树中最左边的节点。我们也知道min-heap中任何节点的正确子节点都不违反BST属性(parent.right> parent)。

我们如何利用这些事实有效地创建就地BST?

0 个答案:

没有答案