实现平衡的二叉搜索树?

时间:2011-07-24 08:25:40

标签: c# algorithm data-structures binary-tree binary-search-tree

我已经实现了一个二叉搜索树,我想在其插入函数中添加更多功能,使其成为一个自平衡树。我在C#编码。

任何人都可以向我推荐一些好的教程或链接吗?我做了一些搜索并找到了一些链接,但没有一个是足够描述性的。

感谢。

2 个答案:

答案 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树。另外它还实现了连接和拆分操作。