我已经实现了一个二叉搜索树,我想在其插入函数中添加更多功能,使其成为一个自平衡树。我在C#编码。
任何人都可以向我推荐一些好的教程或链接吗?我做了一些搜索并找到了一些链接,但没有一个是足够描述性的。
感谢。
答案 0 :(得分:13)
有许多用于自我平衡搜索树的算法,其中许多算法很复杂,而其他算法非常简单(尽管有一些警告)。
Cormen,Leisserson,Rivest和Stein出版的“算法导论”第二版是对算法的精彩介绍,涵盖red/black trees。这也是关于算法和数据结构的一本很好的书。
如果您对使用splay trees感兴趣,original paper on the data structure非常快且实际上很容易实现,treap非常容易使用。最重要的是,它包含了所有运行时边界的证明。
tree rotations是一个简单的随机平衡二叉搜索树,一旦您知道如何实现AVL trees,就可以很容易地实现。树旋转也用于splay树,因此值得研究。
对于this lecture,{{3}}似乎是一个很好的资源。
希望这有帮助!
答案 1 :(得分:0)
签出http://code.google.com/p/self-balancing-avl-tree/,在c#中实现自平衡avl树。另外它还实现了连接和拆分操作。