栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在O(n)时间内将堆转换为BST?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在O(n)时间内将堆转换为BST?

没有算法可以在O(n)时间内从堆中构建BST。原因是给定n个元素,您可以在O(n)的时间内从它们构建一个堆。如果您拥有一组值的BST,则可以通过顺序遍历以O(n)时间对它们进行排序。如果您可以在O(n)的时间内从堆中构建BST,则可以通过以下方式获得O(n)排序算法:

  1. 在O(n)时间内建立堆,
  2. 在O(n)时间内将堆转换为BST,并且
  3. 在O(n)时间中走BST以获得排序的序列。

因此,不可能在O(n)时间(或o(n log n)时间,其中o是 little-
o表示法

)中将堆转换为BST 。

但是,可以通过在O(n log
n)时间中从堆中构建BST,方法是从BST中重复取出最大值并将其插入树中最右边的节点。(您需要在此处存储一个指针以便快速访问;仅重复插入根目录将花费O(n
2)时间。)

希望这可以帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号