问题描述
所以我在使用红/黑树可视化器 (https://www.cs.usfca.edu/~galles/visualization/RedBlack.html) 时遇到了以下树 (按 10、40、25、35、30、45 的顺序插入)。我知道 AVL 树在两条最短路径和最长路径之间不能有高度差,但我很困惑,如果同样适用于红/黑树。有人能指出使这棵树有效的特定属性,以便我加深对这种数据结构的理解吗?
解决方法
红黑树的性质很简单:
- 每个节点要么正好有两个孩子,要么没有孩子。没有子节点的节点是叶节点,通常不会实际存储,因为它们没有标签。 (在您的图表中,它们甚至没有显示。)
- 根是黑色的。
- 所有叶节点都是黑色的。
- 红色节点的子节点是黑色的。
- 每片叶子的黑色深度都是一样的。 (黑色深度是指通往叶子的路径中黑色节点的数量。)
这些属性足以保证最深叶子的深度不超过最浅叶子的两倍。这比 AVL 树(其中两片叶子之间的深度差最多为 1)要宽松得多,但足以保证最大深度是树的大小的对数。而且它是一个维护成本更低的不变量。