【问题标题】:What makes this Red/Black tree left heavy and is it correct?是什么让这棵红/黑树变得沉重,它是否正确?
【发布时间】:2021-05-25 21:26:58
【问题描述】:

所以我在玩红/黑树可视化器 (https://www.cs.usfca.edu/~galles/visualization/RedBlack.html),然后遇到了以下树 (按 10、40、25、35、30、45 的顺序插入)。我知道 AVL 树不能在两条最短路径和最长路径之间存在高度差,但如果这同样适用于红/黑树,我会感到困惑。有人能指出使这棵树有效的特定属性,以便我加深对这种数据结构的理解吗?

【问题讨论】:

  • 这是一个有效的红黑树,因为它具有Wikipedia 中列出的属性,因此:不,在红黑树中,节点子树的高度差不限于0 或 1。

标签: algorithm data-structures red-black-tree red-black-tree-insertion


【解决方案1】:

红黑树的性质很简单:

  1. 每个节点要么正好有两个子节点,要么没有子节点。没有子节点的节点是叶节点,并且通常不会实际存储,因为它们没有标签。 (在您的图表中,它们甚至没有显示出来。)
  2. 根是黑色的。
  3. 所有叶节点都是黑色的。
  4. 红色节点的子节点是黑色的。
  5. 每片叶子的黑色深度都相同。 (黑色深度是指叶子路径中黑色节点的数量。)

这些属性足以保证最深的叶子不超过最浅叶子的两倍。这比 AVL 树的保证要宽松得多(其中两个叶子之间的深度差最多为一个),但足以保证最大深度是树的大小的对数。而且它是一个维护成本更低的不变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2015-04-16
    • 2019-07-26
    • 2013-03-13
    • 2014-09-23
    • 2013-07-16
    • 2013-02-01
    相关资源
    最近更新 更多