【问题标题】:how do I balance my binary tree如何平衡我的二叉树
【发布时间】:2010-10-22 02:28:36
【问题描述】:

我已经有一个工作的二叉树数据库。不幸的是,它需要有自我平衡的能力。我不想重写整个事情,我只想包含一个平衡树的函数。有什么算法或想法吗?

【问题讨论】:

  • Googling "how to balance a binary tree" 带来了很多结果。选择一个。
  • 这不仅仅是“二叉树”,还是“二叉搜索树”。
  • @ArunSaha:你为什么这么说? OP 没有说元素已排序。
  • @James McNellis:你是对的,但是我从 OP 的“平衡”树的要求中推断出这一点。我想不出任何可能需要平衡BT的原因(轮换的基础是什么等),除非它是BST。不过我可能错了。

标签: c algorithm binary-tree


【解决方案1】:

AVL 和 RedBlack 树是自平衡树。 您可以遍历原始树并将节点插入这些树中。 之后,您可以保留新树并丢弃原来的树。

【讨论】:

  • 我认为 OP 的想法是保留他的所有代码并添加一个函数来平衡他的常规二叉树。
【解决方案2】:

我发现斯坦福libavl 教程很有帮助。

查看AVL tree wiki 中的示例。

另外,尝试使用网络上可用的 AVL 树动画,例如

【讨论】:

    【解决方案3】:

    AVL 和红黑树是平衡二叉树。我有一个 AVL 树的实现。看here。它支持插入和搜索。删除尚未实施。

    【讨论】:

      【解决方案4】:

      寻找像 avl red black 这样的平衡树

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        • 2010-09-13
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        • 2015-01-08
        相关资源
        最近更新 更多