任何人都可以帮助我使用 C 程序将一棵二叉树复制到另一棵二叉树吗?
我可以使用算法或 C 函数,以便我可以实现它们。
谢谢 :)
如果您要添加的树是适当的子集(没有重叠)并且树不必平衡,您只需将其根节点附加到正确的插入点即可。我的意思是这样的:
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
目标树的方法会自动执行正确的操作(排序、平衡等)。