|
@@ -601,12 +601,12 @@
|
|
|
|
|
|
- ### 平衡查找树
|
|
|
- 掌握至少一种平衡查找树(并懂得如何实现):
|
|
|
- - “在各种平衡查找树当中,AVL 和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。
|
|
|
- 这种特别令人感兴趣的数据结构,叫伸展树(splay tree)。该数据结构可自我管理,且会使用轮换来移除任何访问过根节点的 key。
|
|
|
+ - “在各种平衡查找树当中,AVL 树和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。
|
|
|
+ 这种令人特别感兴趣的数据结构,亦称伸展树(splay tree)。它可以自我管理,且会使用轮换来移除任何访问过根节点的 key。
|
|
|
” —— Skiena
|
|
|
- - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。通过我的阅读,我发现你并不会在你的面试中被要求实现一棵
|
|
|
- 平衡搜索树。但是,我希望胜人一筹,因此让我们来面对该类树的实现吧。伸展树的确是更高质量的一种实现,因为我的确阅读了
|
|
|
- 大量关于红黑树的代码。
|
|
|
+ - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。虽然,通过我的阅读,我发现在 Google 的面试中并不会被要求实现一棵
|
|
|
+ 平衡查找树。但是,为了胜人一筹,我们还是应该看看如何去实现。在阅读了
|
|
|
+ 大量关于红黑树的代码后,我才发现伸展树的实现确实会使得各方面更为高效。
|
|
|
- 伸展树:插入、查找、删除函数的实现
|
|
|
,而如果你最终实现了红黑树,那么请尝试一下:
|
|
|
- 跳过删除函数,直接实现搜索和插入功能
|