检查二叉树是否有两个相同的子树

时间:2015-08-14 06:52:52

标签: algorithm data-structures tree

我想编写一个方法来查找树是否至少有一对相同的子树,这些子树的值和结构都必须相同。

假设您获得了如下树:

        a
       / \
      b   f
     /   / \
    c   g   d
   /   /   /
  d   h   e
 /
e

这将返回true,因为我们有一对具有根d的相同树。

我的想法是遍历每个节点并构建映射到node name列表的tree nodes地图。在每次迭代中,我们检查当前节点名称是否在地图中。如果它在,那么我们可以用当前节点对树节点列表中的每个节点调用boolean isSameTree(TreeNode t1, TreeNode t2)函数,看它们是否相同。

时间复杂度为O(n ^ 3)。我想知道我们能不能做得更好!

0 个答案:

没有答案