标签:com 查找 arc 设置 代码 .com 子节点 分享 树元素
2-3树节点:
红黑树可以理解为实现了2-3树的BST(binary search tree),它是一个自平衡树,保证在最坏的情况下的操作也是O(lg(n))
特性:
查找操作与BST是相同的
插入规则如下:
操作流程如下图所示:
左旋:
左图为左旋前,右图为左旋后,代码如下所示:
private Node rotateRight(Node h){
assert isRed(h.right);
Node x = h.right; // 复制h的 右子树 为节点x
h.right = x.left; // 将x的左子树移动到h的右节点上(替代)
x.left = h; // 将修改后的h节点作为x的左节点(替代)
x.color = h.color; // x继承h的颜色
h.color = RED; // 将h节点的颜色设置为红色
return x; // 返回x节点作为新的父节点
}
右旋操作与之类似
颜色反转:
左图为颜色翻转前,右图为操作之后,代码如下所示:
private void flipColors(Node h){
assert !isRed(h);
assert isRed(h.left);
assert isRed(h.right);
h.color = RED; // 将父节点颜色改为红色
h.left.color = BLACK; // 将左右子节点颜色改为黑色,
h.right.color = BLACK;
}
此处只实现了查找与插入,如要完整实现所有功能(还有删除),可以采用左倾红黑树(LLRB, Left-leaning red–black tree)
红黑树显示的demo
Reference
标签:com 查找 arc 设置 代码 .com 子节点 分享 树元素
原文地址:https://www.cnblogs.com/fugeny/p/9692300.html