两个二叉搜索树的联合

时间:2015-03-22 19:01:59

标签: java algorithm binary-tree

我需要一些帮助来弄清楚如何合并两个二叉搜索树。我的想法/算法:

1)制作一个新的第三个二元搜索树,以保持其他两棵树的联合。

2)浏览第一棵树,将所有连续元素复制到新创建的树中。

3)完成与上面相同的第二棵树。

我有一个add函数,它负责重复并将东西放入树中,因此这部分不是问题。我的问题是我不知道如何遍历每个节点并单独操作它们。我正在考虑用这样的东西遍历树:

public void inOrderTraverseTree(Node focusNode) {
        if (focusNode != null) {
             preorderTraverseTree(focusNode.leftChild);
             //this is where I can do an operation on the node
             preorderTraverseTree(focusNode.rightChild);

我想把每个连续的节点都添加到我的第三个二叉树中。据我所知,这是不可能实现上述功能的任何变化。还有另一种方法可以解决这个问题吗?它需要一个完全不同的算法吗?

1 个答案:

答案 0 :(得分:1)

可以合并两个二叉搜索树B1和B2,而无需使用任何新的数据结构/内存。  我们可以做1个树的后序遍历,比如B1,逐个删除它们的节点并将它们插入到另一个树B2中。

通过这种方法,B2将包含原始B1和B2的所有节点,B1将在同一过程中被解除分配。