-1

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

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

谢谢 :)

4

1 回答 1

2

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

  10
 /  \
1    70
 *
  5
 / \
2   7

您可以在其中创建一个链接,1以附加到5. 1这将起作用,因为和之间的整个子树插槽10(这就是我所说的“无重叠”)。

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

  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目标树的方法会自动执行正确的操作(排序、平衡等)。

于 2013-05-27T05:57:35.823 回答