Red Black Tree (Draft)

本文处于草稿中。。。

  1. 定义:红黑树利用特征标记决定高度的自平衡二叉搜索树,具有额外的数据决定其节点为黑或红节点。每一条从单一节点到叶子结点的路径都有相同数目的黑色节点。利用此特性,保持树高为$O(lg\ n)$。

    pre:平衡树:空树或其左右两个子树高度差相对小的二叉搜索树。

    正确性特性:

    1. 节点是红色或黑色。
    2. 根是黑色。
    3. 所有叶子都是黑色(叶子是NIL节点)。
    4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
    5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
阅读更多

我最喜欢的快速排序算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program qsort;
var n,p:integer;
a:array[0..100000] of integer;
procedure qs(l,r:integer);//假设被排序的数组是a,且快排后按升序排列)
var i,j,m,t:integer;
begin
i:=l;
j:=r;//(l(left),r(right)表示快排的左右区间)
m:=a[(l+r)div2];//注意:本句不能写成:m:=(l+r)div2;
repeat
while a[i]<m do inc(i);
while a[j]>m do dec(j);//若是降序把'<'与‘>'互换;
if i<=j then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if l<j then qs(l,j);//递归查找左区间
if i<r then qs(i,r);//递归查找右区间
end;
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×