0% found this document useful (0 votes)
17 views19 pages

Lec 36

Uploaded by

saliniprabha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views19 pages

Lec 36

Uploaded by

saliniprabha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Priority Search Trees

• Keys are pairs (x,y).


• Basic (search, insert, delete) and rectangle
operations.
• Two varieties.
 Based on a balanced binary search tree such as a
red-black tree.
• Red-black Priority Search Tree (RBPST)
 Based on a radix search tree.
• Radix Priority Search Tree (RPST)
Radix Priority Search Tree
• All x values are different, integer, and in the
range [0, k – 1].
• Each node of the priority search tree has
exactly one element.
• Min tree on y.
• Radix tree on x.
Radix Priority Search Tree
• The y value of the element in node w is <= the y
value of all elements in the subtree rooted at w
(y values define a min tree).
• Root interval is [0,k).
• Interval for node w is [a,b).
 Left child interval is [a, floor((a+b)/2)).
 Right child interval is [floor((a+b)/2, b)).
Insert
• Start with empty RPST.
• k = 16. [0,16)
• Root interval is [0,16). 5,8
• Insert (5,8).
• Insert (6,9). [0,16)
• (5,8) remains in root, because 8 < 9. 5,8
• (6,9) inserted in left subtree, because[0,8)
6 is in the left child’s interval.
6,9
Insert [0,16)
• Insert (7,1). 5,8
• (7,1) goes into the root, because 1 < 8. [0,8)
• (5,8) inserted in left subtree, because 5 6,9
[0,16)
is in the left child’s interval.
7,1
• (5,8) displaces (6,9), because 8 < 9.
[0,8)
• (6,9) inserted in right subtree, because
6 is in the right child’s interval. 5,8

[4,8) 6,9
Insert
[0,16) [0,16)
7,1 7,1
[0,8) [0,8) [8,16)
5,8 5,8 11,5

[4,8) 6,9 [4,8) 6,9

• Insert (11,5).
Properties
[0,16)
7,1
[0,8) [8,16)
5,8 11,5

[0,4) 2,12 [4,8) 6,9

• Height is O(log k).


• Insert time is O(log k).
Search
[0,16)
7,1
[0,8) [8,16)
5,8 11,5

[0,4) 2,12 [4,8) 6,9

• Search time is O(log k).


Delete
[0,16)
7,1
[0,8) [8,16)
5,8 11,5

[0,4) 2,12 [4,8) 6,9

• Similar to delete min of min heap.


• Delete time is O(log k).
minXinRectangle(xL,xR,yT)
[0,16)
12,1
[0,8) [8,16)
5,8 11,5
[12,16)
[0,4) 2,12 [4,8) 6,9 14,6

• minXinRectangle(6,12,7).
• Time is O(log k).
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK


Profile of visited nodes.
Node is visited iff its y is checked for being ok/notOK.
This check is done only at nodes with an x-range overlap.
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK

Yellow node is node closest to root with 2


examined children.
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK

No yellow node  O(log k) examined nodes


Yellow node  unique
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK

Assume both children of the yellow node are


yok. The other cases are similar.
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK

No other node in the yellow node’s subtree can have two


children marked yok.
Complexity
yok
yok yok

yok ynotOK ynotOK yok

yok ynotOK yok

ynotOK ynotOK ynotOK

# nodes visited < 4log k.


maxXinRectangle(xL,xR,yT)
[0,16)
12,1
[0,8) [8,16)
5,8 11,5
[12,16)
[0,4) 2,12 [4,8) 6,9 14,6

• maxXinRectangle(6,12,7).
• Time is O(log k).
minYinXrange(xL,xR)
[0,16)
12,1
[0,8) [8,16)
5,8 11,5
[12,16)
[0,4) 2,12 [4,8) 6,9 14,6

• minYinXrange(6,10).
• Time is O(log k).
enumerateRectangle(xL,xR,yT)
[0,16)
12,1
[0,8) [8,16)
5,8 11,5
[12,16)
[0,4) 2,12 [4,8) 6,9 14,6

• enumerateRectangle(6,12,8).
• Time is O(log k + s), where s is #points in rectangle.

You might also like