二分查找树的性能。二分查找树在一些极端情况下性能并不好。
我们首先要认识下面一个事实:同样的数据,可以对应不同的二分搜索树。看下面的例子。
二分搜索树可以退化为链表。此时时间复杂度变成了 O(n)。
极端测试:如果把 key 排序好以后,依次插入到二分搜索树中,此时二分搜索树的高度就会变得非常高。
解决方案:平衡二叉树,使用红黑树(红黑树是一种平衡二叉树的实现,其它平衡二叉树的实现还有 2-3 tree,AVL tree,Splay tree,平衡二叉树和堆的结合:Treap)。左右两棵子树的高度差不会超过1。
trie。使用 trie 统计词频。