红黑树和二叉树有什么区别

1 什么是二叉树

二叉树(Binary Tree)是指每个节点最多只有两个分支的树结构,即不存在分支大于 2 的节点。二叉树每个结点的度不大于2(即每个结点最多只有两个子结点),且子树有左右之分,不可随意颠倒顺序。

特征:左边的节点比右边的节点小,右边的子节点比父节点大。先向上对比,比节点小走左边,比节点大走右边。比如找16,只要比较3次就找到了。

 

2 什么是红黑树

红黑树(Red Black Tree)是一种自平衡的二叉查找树,是一种高效的查找树。在当时被称为平衡二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。所谓的平衡树是指一种改进的二叉查找树,顾名思义平衡树就是将二叉查找树平衡均匀地分布,这样的好处就是可以减少二叉查找树的深度。

3 红黑树特征

红黑树除了具备二叉查找树的基本特性之外,还具备以下特性

  • 节点是红色或黑色;
  • 根节点是黑色;
  • 所有叶子都是黑色的空节点(NIL 节点);
  • 每个红色节点必须有两个黑色的子节点,也就是说从每个叶子到根的所有路径上,不能有两个连续的红色节点;
  • 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑色节点

 

 

 

 

平衡二叉树为了维护树的平衡,在一旦不满足平衡的情况就要进行自旋,但是自旋会造成一定的系统开销,因此红黑树在自旋造成的系统开销和减少查询次数之间做了权衡。因此红黑树有时候并不是一颗平衡二叉树。

 

4 红黑树原理

红黑树能够实现自平衡和保持红黑树特征的主要手段是:变色、左旋和右旋。

左旋:指的是围绕某个节点向左旋转,也就是逆时针旋转某个节点,使得父节点被自己的右子节点所替代

 

 

右旋:指的是围绕某个节点向右旋转,也就是顺时针旋转某个节点,此时父节点会被自己的左子节点取代

 

 变色:如果当前节点的左、右子节点均为红色时,因为需要满足红黑树定义的第四条特征

 

 

 

 

 

5 平衡二叉树和红黑树的区别

  • 平衡二叉树的左右子树的高度差绝对值不超过1,但是红黑树在某些时刻可能会超过1,只要符合红黑树的五个条件即可。
  • 二叉树只要不平衡就会进行旋转,而红黑树不符合规则时,有些情况只用改变颜色不用旋转,就能达到平衡。

 

资源:

https://blog.csdn.net/vincent_wen0766/article/details/113121074

 

 

 

 

 

 

 

 

 

 

 

 

 

 





posted @ 2022-11-25 10:12  NingShare  阅读(1110)  评论(0编辑  收藏  举报