例如,
考虑以下树,检查它们是否存在于BST列表中。
5
/ \
4 6
/ \
1 3
3
/ \
2 4
如何解决这个问题?
答案 0 :(得分:1)
根据根对列表进行排序(如果根是相同的,那么左边的节点等)。对于每个查询树,进行二分查找。
如果查询数量与列表中的元素数量相当,则此方法有效。复杂性:((n + m)logn)其中m是查询数,n是列表中元素的数量。
如果查询次数很少,则强力搜索效率很高。
答案 1 :(得分:0)
我会把它作为一个答案,以便人们可以根据自己的喜好做出改变。
一种天真的方法是只扫描列表,比较每个节点,一旦你看到你正在比较的两棵树的差异,只需继续列表中的下一个。 => O(N)其中N是节点的总数。
答案 2 :(得分:0)
这个问题的答案是将列表中的所有树都放在哈希表中,以便有时间搜索树。