【发布时间】:2015-05-25 18:03:33
【问题描述】:
我需要一些帮助来弄清楚如何合并两个二叉搜索树。我的想法/算法:
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);
我想获取每个连续的节点并将其添加到我的第三棵二叉树中。据我所知,使用上述函数的任何变体都无法实现。还有其他方法可以解决这个问题吗?它需要完全不同的算法吗?
【问题讨论】:
-
原始 BST 是否平衡?结果应该是?
标签: java algorithm binary-tree