红黑树的迭代算法

Ani*_*jee 3 .net algorithm red-black-tree

任何人都可以建议我任何指向迭代算法的指针插入和删除到红黑树?.Net/C#中可用的所有算法都基于递归,我不能相信它可以处理大量数据(因此插入/删除的递归深度很大).有没有人有基于迭代的?

注意:Goletas.Collection使用AVL树的迭代算法,这对于大量数据非常有效,我也想要类似于Red-Black Tree的东西.

Kon*_*lph 6

基于树的算法本质上是递归的.

当然你可以将它们重写为迭代但这将是徒劳的练习.原因如下:

红黑树和类似的数据结构是自我平衡的,它们的高度与存储的值的数量成对数.这意味着你永远不会达到递归上限 - 这将要求你插入~2 2000个元素,这根本不会发生:你的计算机没有足够的内存,永远不会.

- 坚持递归,没关系.

  • @Anindya:恰恰相反.递归依赖于调用堆栈,这是一种非常有效的低级数据结构.如果您将算法重写为迭代,则需要管理自己的堆栈,这将始终效率较低(至少添加一个指针间接层,加上边界检查).使迭代比递归更有效的唯一方法是你可以摆脱显式堆栈(尾递归).迭代比递归更快的谣言只是:谣言. (3认同)