当BST订购时它工作正常,但在某些情况下它可能是不平衡的。在这些情况下会发生什么,BST仍然有效吗? 我们可以直接访问ArrayList中的n th 元素,它是否比BST更有效?
答案 0 :(得分:2)
排序数组总是最快的搜索。 二进制搜索树消耗更多内存,可能需要更多级别的间接,这会损害性能并增加缓存未命中的可能性。
答案 1 :(得分:0)
虽然它具有相同的渐近边界,但在有序数组中搜索值会快一点。如果你正在搜索第n个元素,那么排序数组会更快。在Java中,TreeSet和TreeMap之类的东西都基于Red-Black树,它们是自平衡的,不会影响运行时间。 (它们的最大深度为2log(n)而不是log(n),作为完美平衡的树。)