我周二有一个期中考试,我很难理解红黑树。我怎么知道树是平衡的?我知道它与正确数量的黑色节点和黑色深度有关。但我不太明白。我需要知道这一点,因为你将树旋转基于此。如果有人能提供一步一步的解释,那就太好了。谢谢!
答案 0 :(得分:0)
红黑树的规则是:
所以,你所指的规则是我假设的最后一条规则。通过绘制树来放置它的另一种方法:如果你代表一个红黑树,黑色链接是垂直的,红色链接是水平的,那么所有的叶子都会在同一层上。
如果一棵树遵循这四条规则,那么它就是一棵有效的红黑树。规则1和2很容易修复。如果树不遵守规则3,则会违反代码红色,如果不遵循规则4,则称为黑色违规。
在下面的示例中,两棵树包含黑色违规,因为第四条规则不受尊重。
2,B 2,B
/ \ / \
1,B 0,R 1,B 6,B
/ / \
0,B 4,R 8,R
如果你要确定红黑树是否有效,那么也许你应该画一些并看看他们是否尊重这些规则。如果您需要了解操作,您需要查看一些教程,互联网上有很多。
无论如何,可以在这里找到关于红黑树的精彩教程:http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx
如果您不感兴趣,可以跳过实现部分,但它会通过规则,表示和算法解释为什么它以这种方式工作。
希望这有帮助。