【发布时间】:2010-05-17 09:56:49
【问题描述】:
如何将二叉树转换为具有 O(1) 额外空间的二叉搜索树?
【问题讨论】:
-
我假设你的原始二叉树没有排序?
-
我认为不是,否则它已经符合 BST 的定义。
标签: data-structures binary-tree big-o binary-search-tree
如何将二叉树转换为具有 O(1) 额外空间的二叉搜索树?
【问题讨论】:
标签: data-structures binary-tree big-o binary-search-tree
将无序二叉树转换为有序二叉搜索树很简单,但要快速完成有点困难。
这是一个满足您的标准的简单实现,我不会描述要采取的实际步骤,只描述整体算法。
您应该只需要几个变量,例如要取消链接的叶节点的父节点(除非节点具有父链接)、新树的根节点和几个临时变量,所有这些都在您的O(1) 空间标准。
这不会产生最佳的二叉搜索树。为此,您需要在添加节点之前对它们进行排序,并以正确的顺序添加它们,或者使用平衡二叉搜索树,如红黑树或展开树。
【讨论】:
将二叉树转换为双向链表 - 可以在 O(n) 中就地完成 然后使用归并排序,nlogn 对其进行排序 将列表转换回树 - O(n)
简单的 nlogn 解决方案。
【讨论】: