我有一个BST,其中包含包含键和字符串的条目。
我已经制作了一棵树,并填充了其值,并希望将其值复制到另一棵树中。我仅有的功能是通用的二叉搜索树功能以及迭代器Begin()和End()。

我如何不使用直接复制功能即做到这一点。复制(T1,T2)?

我只是在理论上寻找方法,而不是实际的代码实现。

最佳答案

如果您拥有的唯一功能是搜索,插入,删除,开始迭代器和结束迭代器,那么听起来您唯一的选择就是遍历第一棵树,分别将每个值插入目标树。但是要注意,如果这些迭代器按顺序返回元素,并且您的树不是自平衡的,那么在复制时,结果树将是木棍。 (即,它将完全不平衡。)如果您的迭代器返回值pre-orderbreadth first,则不必担心。

例如。给定以下树:

     4
    / \
   /   \
  2     6
 / \   / \
1   3 5   7


如果迭代器返回序列1, 2, 3 ... 7,则按该顺序将它们插入到空树中将产生以下结果:

1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6
           \
            7


但是,预订迭代器将返回4, 2, 1, 3, 6, 5, 7,呼吸优先迭代器将返回4, 2, 6, 1, 3, 5, 7,并且这两个插入命令中的任何一个都将重现原始树。

关于c++ - 二进制搜索树-将一棵树复制到另一棵树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40969075/

10-12 18:10