C程序将一个二叉树复制到另一个

时间:2013-05-27 05:52:49

标签: c data-structures binary-tree

任何人都可以帮我使用C程序将一个二叉树复制到另一个二叉树吗?

我可以使用算法或C函数,以便我可以实现它们。

谢谢:)

1 个答案:

答案 0 :(得分:2)

如果要添加的树是适当的子集(没有重叠)并且树不必平衡,则只需将其根节点附加到正确的插入点即可。通过这个,我的意思是:

  10
 /  \
1    70
 *
  5
 / \
2   7

您可以在1右侧创建链接以附加到5。这将起作用,因为整个子树位于110之间(我的意思是“没有重叠”)。

事实上,如果树甚至没有排序,你可以将根节点附加到你想要的任何叶子:

  40
 /  \
1    10
       *
        5
       / \
      8   789

在这种情况下,重叠不是问题,因为树没有排序,所以假设你不关心订单是一个安全的赌注。

但是,如果您有一个平衡的排序树,最好的办法是遍历其中一棵树,并使用insert方法将找到的每个值添加到其他树。

这将正确组合“重叠”树并在必要时保持目标树平衡。所以,使用上面的第一个例子,你会得到类似的东西:

     7
    / \
   /   \
  2     10
 / \      \
1   5      70

“算法”就变成了:

def copyTree (source, destination):
    item = source.first()
    while item != none_left:
        destination.insert (item.value)
        item = source.next (item)

这样,您不必担心附件是否会有问题,因为目标树的insert方法会自动执行正确的操作(排序,平衡等)。