210 likes | 329 Views
Chapter 12. Binary search trees Lee, Hsiu-Hui Ack: This presentation is based on the lecture slides from Hsu, Lih-Hsing, as well as various materials from the web. Binary Search Tree. Binary-search property :
E N D
Chapter 12 Binary search trees Lee, Hsiu-Hui Ack: This presentation is based on the lecture slides from Hsu, Lih-Hsing, as well as various materials from the web.
Binary Search Tree • Binary-search property: Let x be a node in a binary search tree. If y is a node in the left subtree of x, then key[y] key[x]. If y is a node in the right subtree of x, then key[x] key[y]. Hsiu-Hui Lee
Binary search Tree Hsiu-Hui Lee
Inorder tree walk INORDER_TREE_WALK(x) 1 if 2 then INORDER_TREE_WALK(left[x]) 3 print key[x] 4 INORDER_TREE_WALK(right[x]) Hsiu-Hui Lee
Theorem 12.1 If x is the root of an n-node subtree, then the call INORDER-TREE-WALK(x) takes (n) time. Proved by substitution method. Hsiu-Hui Lee
Preorder tree walk • Postorder tree walk Hsiu-Hui Lee
Querying a binary search tree Hsiu-Hui Lee
TREE_SEARCH(x, k) 1 ifor 2 then returnx 3 if 4 then return TREE_SEARCH(left[x],k) 5 else return TREE_SEARCH(right[x],k) Hsiu-Hui Lee
ITERATIVE_SEARCH (x, k) 1 While or 2 do if 3 then 4 then 5 returnx Hsiu-Hui Lee
MAXIMUM and MINIMUM TREE_MINIMUM(x) 1 while left[x] NIL 2 dox left[x] • returnx TREE_MAXIMUM(x) 1 while right[x] NIL 2 dox right[x] 3 returnx Hsiu-Hui Lee
SUCCESSOR and PREDECESSOR TREE_SUCCESSOR 1 if 2 then return TREE_MINIMUM(right[x]) 3 4 whileand 5 do 6 7 returny Hsiu-Hui Lee
Successor of the node with key value 15. (Answer: 17) • Successor of the node with key value 6. (Answer: 7) • Successor of the node with key value 4. (Answer: 6) • Predecessor of the node with key value 6. (Answer: 4) Hsiu-Hui Lee
Theorem 12.2 • The dynamic-set operations, SEARCH, MINIMUM, MAXIMUM, SUCCESSOR, and PREDECESSOR can be made to run in O(h) time on a binary search tree of height h. Hsiu-Hui Lee
Tree-Insert(T, z) 1 y NIL 2 x root[T] 3 whilex NIL 4 doy x 5 ifkey[z] < key[x] 6 thenx left[x] 7 elsex right[x] • p[z] y 9 ify = NIL 10 thenroot[T] z tree T was empty 11 elseifkey[z] < key[y] 12 thenleft[y] z 13 elseright[y] z Hsiu-Hui Lee
Inserting an item with key 13 into a binary search tree Hsiu-Hui Lee
Tree-Delete(T, z) 1 ifleft[z] = NILorright[z] = NIL 2 theny z 3 elsey Tree-Successor(z) 4 if left[y] NIL 5 thenx left[y] 6 elsex right[y] 7 ifx NIL • thenp[x] p[y] 9 ifp[y] = NIL 10 thenroot[T] x 11 else ify = left[p[y]] 12 thenleft[p[y]] x 13 elseright[p[y]] x 14 ify z 15 thenkey[z] key[y] 16 copy y’s satellite data into z 17 returny Hsiu-Hui Lee
Case a: z has no children Hsiu-Hui Lee
Case b: z has only one child Hsiu-Hui Lee
Case c: z has two children Hsiu-Hui Lee
Theorem 12.3 • The dynamic-set operations, INSERT and DELETE can be made to run in O(h) time on a binary search tree of height h. Hsiu-Hui Lee