红黑树是一种自平衡二叉查找树,它的用途主要是用于查找,插入和删除操作,因为它能够自动保持平衡从而提高查找效率,它具备以下特点:
1.每个节点都有一个颜色,可以是红色或黑色
2.根节点是黑色
3.每个叶子节点(NIL)是黑色
4.每个红色节点的两个子节点都是黑色
5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点
// 红黑树模型
class RedBlackTree {
constructor() {
this.root = null;
}
// 插入节点
insert(key) {
let newNode = new Node(key);
let current = this.root;
let parent = null;
let color = RED;
// 如果根节点为null,则新节点为根节点
if (this.root === null) {
this.root = newNode;
newNode.color = BLACK;
return;
}
// 找到新节点的父节点
while (current !== null) {
parent = current;
if (newNode.key < current.key) {
current = current.left;
} else {
current = current.right;
}
}
// 把新节点放到父节点上
newNode.parent = parent;
if (newNode.key < parent.key) {
parent.left = newNode;
Javascript红黑树模型
于 2023-02-01 18:26:10 首次发布