任何人都可以帮我使用C程序将一个二叉树复制到另一个二叉树吗?
我可以使用算法或C函数,以便我可以实现它们。
谢谢:)
答案 0 :(得分: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
方法会自动执行正确的操作(排序,平衡等)。