红黑树

痞子三分冷 提交于 2020-02-20 13:01:40

  改变颜色和旋转 变颜色的情况:当前节点父亲是红色,且它的祖父亲节点的另一个子节点也是红色(叔叔节点):

 1.将父亲节点设置为黑色

 2.将叔叔节点设为黑色  

3.将祖父也就是父亲的父亲设为红色  

4.把指针定义到祖父节点设为当前操作

左旋转:    

 左旋:当父亲节点为红色情况,叔叔的节点为黑色的情况,且当前的节点是右子树,左旋转以父节点作为左旋;    

右旋转:当父亲节点为红色情况,叔叔的节点为黑色的情况,且当前的节点是左子树,右旋转以    

1.将父节点变为黑色

2.将祖父节点变为红色(爷爷)

3.以祖父节点开始旋转

 

数据结构: Jdk1.7使用数组+链表 Jdk1.8使用数组+链表+红黑树(解决链表过长查询慢的问题) (当链表深度达到8的时候,就会采用红黑树存放,这时候时间复杂度为O (n ))变为O(log n) 扩容线程安全问题: Jdk1.7采用头插法,在数组扩容的时候容易导致死循环问题、Jdk1.8采用尾插入法解决了数组扩容容器导致死循环问题

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!