红黑树

举报
毛利 发表于 2021/07/15 08:23:06 2021/07/15
【摘要】 什么是平衡二叉查找树 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 红黑树(Red Black Tree) 是一种自平衡二叉查找树 每个节点要么是红色,要么是黑色。根节点必须是黑色红色节点不能连续(也即是,...

什么是平衡二叉查找树

平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

在这里插入图片描述
红黑树(Red Black Tree) 是一种自平衡二叉查找树

  • 每个节点要么是红色,要么是黑色。
  • 根节点必须是黑色
  • 红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。红色节点是黑色节点隔开的
  • 对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。
  • 每个叶子节点都是黑色的空节点(NIL),也就是叶子节点不存储数据

在这里插入图片描述
如果将红黑树的红色节点去掉,单纯包含黑色节点的红黑树的高度将发生改变
在这里插入图片描述

一棵极其平衡的二叉树(满二叉树或完全二叉树)的高度大约是 l o g 2 n log_2n log2n,红黑树的高度也比较稳定趋向 l o g 2 n log_2n log2n

红黑树两个重要操作

左旋和右旋

图中a,b,r表示子树
在这里插入图片描述

红黑树的插入

插入的节点必须是红色的,插入的节点都是放在叶子节点

  • 如果插入节点的父节点是黑色的,那么什么也不用做
  • 如果插入的节点是根节点,那直接改变他的颜色,把它变成黑色就可以了

关于红黑树的插入,个人理解不深

推荐大神博客
https://blog.csdn.net/abcdef314159/article/details/77193888

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/90648770

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。