Binary tree 红黑树澄清问题
我一直在读关于红黑树的书,有两个问题一直困扰着我。我仍然在了解它们,如果这些对一个更有经验的程序员来说是显而易见的,那么很抱歉Binary tree 红黑树澄清问题,binary-tree,red-black-tree,Binary Tree,Red Black Tree,我一直在读关于红黑树的书,有两个问题一直困扰着我。我仍然在了解它们,如果这些对一个更有经验的程序员来说是显而易见的,那么很抱歉 如果在红黑树中插入节点,平衡树,然后删除节点,是否会生成同一棵树?总是这样吗?在我看来是的,但我不完全确定 如果删除没有子节点的红色节点,请平衡树,然后重新插入相同的节点,是否始终会导致相同的树?总是,有时,还是永远 再一次,如果有琐碎的问题,我很抱歉,我还在学习,还没有找到这些问题的好答案。提前谢谢 您的第一个问题的答案是否它不会导致相同的树,下面我展示了一个示例:
再一次,如果有琐碎的问题,我很抱歉,我还在学习,还没有找到这些问题的好答案。提前谢谢 您的第一个问题的答案是
否它不会导致相同的树
,下面我展示了一个示例:
5(B) 5(B) 5(B)
/ \ Del(3) / \ Ins(3) / \
3(B) 9(B) =====> 4(B) 9(B) =====> 4(B) 9(B)
\ /
4(R) 3(R)
正如你所看到的,这棵树已经变了
第二个问题的答案是是,它总是导致相同的树
,因为当您删除没有子节点的红色节点时,不会发生重新平衡,因为没有违反任何规则,由于红色节点
的父节点始终是黑色节点
,当我们再次添加红色节点时,它将位于相同的位置
下面是一个可视化工具的链接,可以帮助您消除更多疑问:您的第一个问题的答案是否它不会导致相同的树,下面我展示了一个示例:
5(B) 5(B) 5(B)
/ \ Del(3) / \ Ins(3) / \
3(B) 9(B) =====> 4(B) 9(B) =====> 4(B) 9(B)
\ /
4(R) 3(R)
正如你所看到的,这棵树已经变了
第二个问题的答案是是,它总是导致相同的树
,因为当您删除没有子节点的红色节点时,不会发生重新平衡,因为没有违反任何规则,由于红色节点
的父节点始终是黑色节点
,当我们再次添加红色节点时,它将位于相同的位置
这里是一个可视化工具的链接,可以帮助您消除更多疑问:太棒了,谢谢。那个网站对我的理解很有帮助!太棒了,谢谢你。那个网站对我的理解很有帮助!