查找算法
暴力:遍历for循环
二分:能做二分查找的条件?有序
**哈希(最高效的查找)**O(1)
插值
索引:搜索引擎,Lucene
bfs/dfs图论的遍历
平衡树
B+树
B-Tree
红黑树:高效查找数据的结构
二叉搜索树
时间复杂度就是数的深度
Java的1.8之中的Hashmap:链表+红黑树
HashMap与红黑树的学习,当使用hashmap的时候出现排序的情况。
二叉查找树(红黑树)
平衡二叉树:
平衡二叉树的折中,最理想的状态
红黑树的底层结构是什么?二叉查找树
链表(暴力查找)->二叉树()–>特殊的二叉树(自平衡二叉查找树)
注意:两个 黑色可以连接在一起
根节点是黑色(没有父节点)入度为0
红色节点的子节点是黑色,叶子节点都是黑色,出度为0,满足了性质就可以近似平衡。
下面是对红黑树的基本内容:下面是代码实现
package redblacktree;
/**
* @author xinyu
* @create 2021-03-0421:07
*这里实现红黑树的代码
*/
public class red {
//定义红黑节点,这里的红黑节点采用0,1 来表示
private final int R = 0;
private final int B = 1;
//定义根节点
private Node root = null;
class Node{
int data;
int color = R;
Node left;
Node right;
Node parent;//定义父亲节点
//定义根节点
public Node(int data){
this.data = data;
}
}
//插入红黑书
public void insert(Node root,int data){
if (root.data<data){
if (root.right == null){
root.right = new Node(data);
}
else insert(root.right,data);
}
else{
if (root.left == null){
root.right = new Node(data);
}
else insert(root.left,data);
}
}
//红合黑叔的左旋
//分三步1.
public void leftRotate(Node node){
if (node.parent == null){
//表示根节点
Node E = root;
Node S = root.right;
//第一步操作,
E.right = S.left;
S.left.parent = E;
//修改E的指针,第三步修改S的指针
E.parent = S;
S.parent = null;
}
}
}