【发布时间】:2012-03-25 05:54:05
【问题描述】:
我不是问如何合并两个二叉搜索树,就像这个问题How to merge two BST's efficiently?
我真的在问如何连接两棵树。因此,如果树 A 的所有节点都小于树 B 的任何节点,我们可以连接两棵树。但是我该如何有效地做到这一点呢?
我的想法是找到树B的最小值,然后让树A成为最小值(树B)的左孩子。
这很简单,时间是O(height of B)。
但我猜这个解决方案有一些问题:
- 可能会导致最终的大树不再平衡
- 如果最坏情况下的运行时间是
O(h),其中h是两棵树的最大高度怎么办?
实际上,《Algorithm Design Manual》这本书有这个消费税。我的简单解决方案足以完成这个练习吗?
连接操作需要两个集合 S1 和 S2,其中 S1 中的每个键都小于 S2 中的任何键,并将它们合并在一起。 给出一个算法将两棵二叉搜索树连接成一棵二叉搜索树。最坏情况下的运行时间应该是 O(h),其中 h 是两棵树的最大高度。
谢谢
【问题讨论】: