210 likes | 217 Views
Learn about the properties and operations of binary search trees, including search, insertion, deletion, and tree traversal. Understand the time complexity of these operations. Materials based on lecture slides and various web resources.
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