我如何合并两个二叉树

时间:2011-08-22 19:22:49

标签: algorithm data-structures merge tree

我有两个二叉树,我想合并它们。 我的第一个问题是,我们是否可以合并两个二叉树,如果是,我可以如何有效地执行合并操作以及我可以执行合并操作的各种方法。 ..?

5 个答案:

答案 0 :(得分:22)

1)将两棵树展平为已排序的列表。
2)合并你在1)中得到的列表 3)根据你在2)

中得到的结构构建树

答案 1 :(得分:5)

This算法可能会对您有所帮助。

答案 2 :(得分:2)

不考虑效率,这个答案可能有效Algorithm of combining two binary trees?。如果排序或平衡,请在How to merge two BST's efficiently?Concatenating/Merging/Joining two AVL trees

中讨论效率问题

答案 3 :(得分:0)

创建一个新节点,并在其中一棵树的头部指向一条尾巴,并将另一条尾巴指向另一棵树的头部。也许你需要澄清你的问题更具体。你想保留什么关系?

答案 4 :(得分:0)

树也是图形,因此输出每个树的边顶点对(u,v),然后将这些边集合并,并输出结果图。

问题在于如何将一棵树中的顶点映射到另一棵树中的顶点(例如,我们在树1中有边缘对(5,9),在树2中有边缘对(5,6),这些5对应到同一个顶点?)。

使用顶点编号(可能将数字分配给不完整二叉树中的每个顶点,就像它是完整的二叉树一样,换句话说,将任何部分二叉树中的顶点分配给假设的插槽完整的二叉树,其中树是一个子树),以某种方式提供一个理想的等价是有效的。