Lecture 20
Lecture 20
is said to be
universal if:
With a random hash function from , the chance of a
including x itself:
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
Selection On OS Trees
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
OS-Select
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
OS-Select Example
Example: show OS-Select(root, 5):
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
M
8
C
5
A
1
P
2
F
3
D
1
Q
1
H
1
OS-Select Example
Example: show OS-Select(root, 5):
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
M
8
i=5
r=6
C
5
A
1
P
2
F
3
D
1
Q
1
H
1
OS-Select Example
Example: show OS-Select(root, 5):
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
M
8
C
5
A
1
i=5
r=6
i=5
r=2
P
2
F
3
D
1
Q
1
H
1
OS-Select Example
Example: show OS-Select(root, 5):
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
M
8
C
5
A
1
i=5
r=2
F
3
D
1
i=5
r=6
P
2
i=3
r=2
H
1
Q
1
OS-Select Example
Example: show OS-Select(root, 5):
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
M
8
C
5
A
1
i=5
r=2
F
3
D
1
i=5
r=6
P
2
i=3
r=2
H
1
Q
1
i=1
r=1
OS-Select: A Subtlety
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
Oops
OS-Select
OS-Select(x, i)
{
r = x->left->size + 1;
if (i == r)
return x;
else if (i < r)
return OS-Select(x->left, i);
else
return OS-Select(x->right, i-r);
}
Determining The
Rank Of An Element
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
Determining The
Rank Of An Element
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
Determining The
Rank Of An Element
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
Determining The
Rank Of An Element
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
Determining The
Rank Of An Element
M
8
C
5
P
2
A
1
F
3
D
1
Q
1
H
1
OS-Rank
OS-Rank(T, x)
{
r = x->left->size + 1;
y = x;
while (y != T->root)
if (y == y->p->right)
r = r + y->p->left->size + 1;
y = y->p;
return r;
}
What will be the running time?
rightRotate(y)
7
x
19
leftRotate(x)
y
12
6
4