查找以下树是否存在于百万个二叉搜索树的列表中

时间:2013-04-11 15:38:50

标签: algorithm data-structures binary-search-tree

例如,

考虑以下树,检查它们是否存在于BST列表中。

           5
          / \
         4   6
        / \
       1   3


       3
      / \
     2   4

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

根据根对列表进行排序(如果根是相同的,那么左边的节点等)。对于每个查询树,进行二分查找。

如果查询数量与列表中的元素数量相当,则此方法有效。复杂性:((n + m)logn)其中m是查询数,n是列表中元素的数量。

如果查询次数很少,则强力搜索效率很高。

答案 1 :(得分:0)

我会把它作为一个答案,以便人们可以根据自己的喜好做出改变。

一种天真的方法是只扫描列表,比较每个节点,一旦你看到你正在比较的两棵树的差异,只需继续列表中的下一个。 => O(N)其中N是节点的总数。

答案 2 :(得分:0)

这个问题的答案是将列表中的所有树都放在哈希表中,以便有时间搜索树。