红黑树插入和删除 关键点变色与旋转自平衡
昨天学习了红黑树,它是二叉搜索树的优化版本,避免了二叉搜索树在插入排好序的集合时退化成链表的问题。 一、红黑树的五条准则 要么黑要么红 根节点一定是黑的 叶子节点(NIL)一定是黑色的 红色节点的两个子节点必须是黑的(即不能连续红) 从任意节点到其每一个叶子节点,黑色节点的数量相同 二、插入操作示例1、单旋(LL型)构建一颗 [7, 3, 1] 的红黑树 第一步:插入 7新节点默认红色,但根节点一定是黑色,所以改成黑色。 第二步:插入 3默认红色,父节点是黑色,没有连续红,直接插入。 第三步:插入 1插入后出现连续红(3和1均为红色),且叔叔节点为 null(黑色)。由于插入元素 1 与父节点 3 方向相同(左-左),触发右单旋: 祖父节点 7 与父节点 3 整体右旋 3 上浮为子树根,变黑色 7 下沉为右孩子,变红色 2、双旋(LR型)构建一颗 [10, 18, 7, 15, 16] 的红黑树 第一步:插入 10 第二步:插入 18 第三步:插入 7 第四步:插入 15出现连续红(18 和 15),叔叔节点 7 为红色,触发变色: 叔叔节点 7 变黑 父节...
我的第一篇博客
这是我的第一篇博客,想简单的介绍一下这个博客的内容以及后续会发布的内容,主要以记录学习软工踩过的坑为主,或者学习心得,后续可能会发布一些工具的推荐或者使用心得等,内容不限,想到什么发什么,就这样。