| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> javaSE——集合(红黑树) -> 正文阅读 |
|
[数据结构与算法]javaSE——集合(红黑树) |
参考: 一、二叉查找(排序)树1.概念(1).定义二叉查找树就是一颗二叉树,他的左节点比父节点要小,右节点比父节点要大,它的高度决定查找效率 (2).特点
2.BST操作(1).查找从根节点开始查找
(2).插入要插入节点,则必须先找到插入节点的位置。 ??? 从根节点开始查找:
直到比较到左右子树为空时,则插入到对应位置。 (3).遍历
(4).查找最小值节点从根节点开始,不断查询当前节点的左子节点,直到最后一个不为空的节点,该节点就是整棵树的最小值节点。 (5).查找最大值节点从根节点开始,不断查询当前节点的右子节点,直到最后一个不为空的节点,该节点就是整棵树的最大值节点。 (6).查找前驱节点前驱节点:小于当前节点的最大值节点 ??? 即: ???????
(7).查找后继节点后继节点:大于当前节点的最小值节点 ??? 即: ???????
(8).删除删除操作前提:删除要保证删除后,BST树的节点还能保证有序 ??? 删除操作本质:是用被删除节点的前驱节点或者后继节点来替代。 ???????
二、二叉平衡树1.概念(1).定义BST有一种极端情况,就是全左倾树,或者全右倾树。 (2).特点AVL树是一个高度自平衡的树,即AVL树的根节点的左右子树的高度差不超过绝对值1。且左右子树本身也是二叉平衡树。另外AVL树具备BST树的全部特性。 ??? AVL树查询的时间复杂度为O(logN),即每次查询都是二分查找。 2.AVL树的旋转操作当AVL树中插入新节点时,就可能出现左右子树高度差超过1的情况,此时AVL树就会进行旋转操作,来改变树的结构以保证平衡性,即将左右子树高度差降为1. (1).左旋以某个节点作为旋转点,其右子节点变为旋转节点的父节点,右子节点的左子节点变为旋转节点 的右子节点,左子节点保持不变。 (2).右旋以某个节点作为旋转点,其左子节点变为旋转节点的父节点,左子节点的右子节点变为旋转节点 的左子节点,右子节点保持不变。 三、2-3-4树1.概念234树是四阶的平衡树(Balance Tree),它属于多路查找树
2.2-3-4树和红黑树的等价关系
四、红黑树1.概念(1).定义红黑树是一种节点带颜色属性的二叉查找树。 红黑树的每个节点都有存储为表示节点的颜色,只能是红或者黑。 红黑树的平衡是指任意节点到叶子节点的不同简单路径中所拥有的黑色节点个数相同。 即红黑树的平衡是一种黑色平衡。 (2).特性1.红黑树的每个节点只能是红色或者黑色。(非黑即红) 2.根节点必须是黑色。(黑根) 3.每个叶子节点是黑色的。(叶子节点是Nil)(黑叶) 4.如果某个节点是红色,则它的子节点必须是黑色,不能出现两个红色节点相连的情况。(红红互斥) 5.对于每个节点,从该节点到其后代的叶子节点的简单路径上,均包含相同数目的黑色节点。(黑色平衡) 2.红黑树原子行为(1).变色(2).左旋(3).右旋3.红黑树增删改查(1).插入元素
(2).删除元素未完待续 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 15:29:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |