-
Notifications
You must be signed in to change notification settings - Fork 780
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-09-16:什么是红黑树?为什么要用红黑树? #147
Comments
红黑树又叫平衡二叉树,所以要先了解什么是二叉树.为什么要用红黑树,我理解就是查找数据速度快,就是添加和修改数据麻烦,但一般对于用户来说,更多追求查找数据显示出来快. |
二叉树的提出其实主要就是为了提高查找效率,比如我们常用的 HashMap 在处理哈希冲突严重时,拉链过长导致查找效率降低,就引入了红黑树。 查找二叉树(BST)是一种特殊的二叉树,其任何节点中的值都会大于或者等于其左子树中存储的值并且小于或者等于其右子树中存储的值。
平衡二叉树(AVL)
红黑树 红黑树:相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索,插入,删除操作较多的情况下,我们就用红黑树。 |
我看了大概一天的红黑树, 总结一下吧, 如果有错误, 欢迎指正 java 的 HashMap, TreeMap, TreeSet, Linux 的虚拟内存管理; 每个节点, 都包含5个属性:color, key, left, right 和 parent; 一般红黑树必须是满足以下属性的二叉搜索树: 从某个节点 N 出发, 达到一个叶子节点, 经过任意一个简单路径, 其黑色节点的个数称之为黑高, 记为 bh; 左旋传会带上左父亲, 右旋转会带上右父亲; 插入操作基本描述 什么情况下需要旋转, 什么情况下不需要旋转? 调整红黑树 (4)当前节点的父节点, 是红色的, 叔叔节点是 T.nil 节点或者是黑色的, 当前节点是父节点的右孩子; (5)当前节点的父节点, 是红色的, 叔叔节点是 T.nil 节点或者是黑色的, 当前节点是父节点的左孩子; 删除操作待删除的节点情况可以分为 3 种: 调整红黑树 case.. 待删除的节点, 是红色的, 没有子节点, 直接删除既可; case.. 待删除的节点, 是红色的, 只有一个子节点, 子节点一定是黑色的, 父节点也一定是黑色的; case.. 待删除的节点, 是红色的, 它有两个子树, 当然左右子树都是黑色的, 父节点是黑色的; case.. 待删除的节点, 是黑色的, 只有一个子节点, 子节点是红色的; case.. 待删除的节点, 是黑色的, 是父节点的左子树, 并且兄弟节点是红色的; case.. 待删除的节点, 是黑色的, 是父节点的左子树, 它的兄弟节点是黑色的, 远侄子是红色的; case.. 待删除的节点, 是黑色的, 是父节点的左子树, 它的兄弟节点是黑色的, 近侄子是红色的; case.. 待删除的节点, 是黑色的, 是父节点的左子树, 它的兄弟节点是黑色的, 两个侄子都是黑色的; case.. 待删除的节点, 是黑色的, 是父节点的右子树, 并且兄弟节点是红色的; case.. 待删除的节点, 是黑色的, 是父节点的右子树, 它的兄弟节点是黑色的, 远侄子是红色的; case.. 待删除的节点, 是黑色的, 是父节点的右子树, 它的兄弟节点是黑色的, 近侄子是红色的; case.. 待删除的节点, 是黑色的, 是父节点的右子树, 它的兄弟节点是黑色的, 两个侄子都是黑色的; case.. 待删除的节点, 是黑色的, 它的兄弟节点是黑色的, 它和兄弟节点都没有子节点; 参考https://www.cnblogs.com/skywang12345/p/3245399.html 插入 删除 在线演示红黑树 |
No description provided.
The text was updated successfully, but these errors were encountered: