Binary Search Trees Traversals BST properties BST search
Binary Search Trees Traversals BST properties BST search, insert October 15, 2018 Cinda Heeren / Geoffrey Tien 1
Correction! I made a mistake • Tree height, subtree height, node height – Height of a node or subtree is measured to the deepest leaf in its own subtree! Height of B: 4 B Height of A: 1 October 15, 2018 A C Cinda Heeren / Geoffrey Tien Height of C: 3 2
Binary tree traversal Back to recursion • A traversal algorithm for a binary tree visits each node in the tree – Typically, it will do something while visiting each node! • Traversal algorithms are naturally recursive • There are three traversal methods – in. Order – pre. Order – post. Order October 15, 2018 Cinda Heeren / Geoffrey Tien 3
in. Order traversal algorithm void in. Order(Node* nd) { if (nd != NULL) { in. Order(nd->leftchild); visit(nd); in. Order(nd->rightchild); } } The visit function would do whatever the purpose of the traversal is (e. g. print the data value of the node). October 15, 2018 Cinda Heeren / Geoffrey Tien 4
pre. Order traversal visit(nd); pre. Order(nd->leftchild); 1 pre. Order(nd->rightchild); 17 2 13 visit pre. Order(left) pre. Order(right) 4 visit pre. Order(left) pre. Order(right) October 15, 2018 visit pre. Order(left) pre. Order(right) 5 3 9 6 16 27 8 7 20 visit pre. Order(left) pre. Order(right) 39 visit pre. Order(left) pre. Order(right) 11 Cinda Heeren / Geoffrey Tien 5
post. Order traversal post. Order(nd->leftchild); post. Order(nd->rightchild); 8 visit(nd); 17 4 13 7 post. Order(left) post. Order(right) visit 3 2 9 post. Order(left) post. Order(right) visit 1 post. Order(left) post. Order(right) visit October 15, 2018 16 27 post. Order(left) post. Order(right) visit 6 5 20 post. Order(left) post. Order(right) visit 39 post. Order(left) post. Order(right) visit 11 Cinda Heeren / Geoffrey Tien 6
Before we move on. . . Another type of tree traversal • We have seen pre-order, in-order, post-order traversals • What about a traversal that visits every node in a level before working on the next level? – level-order traversal 41 33 21 87 74 78 October 15, 2018 36 45 25 Cinda Heeren / Geoffrey Tien Use some ADT to support this? 7
Traversal tricks • An excellent trick shared by one of your classmates: – https: //en. wikibooks. org/wiki/Alevel_Computing/AQA/Paper_1/Fundamentals_of_algorithms/Tree_tra versal – Trace around the tree counter-clockwise – Visit a node when you hit one of its markers for pre-, post-, or in-order October 15, 2018 Cinda Heeren / Geoffrey Tien 8
Motivation for an efficient lookup Dictionary ADT • Stores values associated with user-specified keys – Values may be any (homogenous) type – Keys may be any (homogenous) comparable type • Dictionary operations – – – Create Destroy Insert Find Remove Insert • Feet • Useful for something, presumably Find(Z 125 Pro) • October 15, 2018 Z 125 Pro • Fun in the sun! Cinda Heeren / Geoffrey Tien • Super 9 LC • Park it on the sidewalk, it's OK • Z 125 Pro • Fun in the sun! • CB 300 F • For the mild-mannered commuter 9
Data structures for Dictionary ADT Naïve implementations, complexity Search Insert Remove • Linked list • Unsorted array • Sorted array • Ordered linked list October 15, 2018 Cinda Heeren / Geoffrey Tien 10
Binary search tree property • A binary search tree is a binary tree with a special property – For all nodes in the tree: • All nodes in a left subtree have labels less than the label of the subtree's root • All nodes in a right subtree have labels greater than or equal to the label of the subtree's root • Binary search trees are fully ordered October 15, 2018 Cinda Heeren / Geoffrey Tien 11
BST example 17 13 9 27 16 20 39 11 October 15, 2018 Cinda Heeren / Geoffrey Tien 12
BST in. Order traversal in. Order(nd->leftchild); visit(nd); 5 in. Order(nd->rightchild); 17 in. Order traversal on a BST retrieves data in sorted order 3 13 in. Order(left) visit in. Order(right) 2 in. Order(left) visit in. Order(right) October 15, 2018 in. Order(left) visit in. Order(right) 4 1 9 7 16 27 8 6 20 in. Order(left) visit in. Order(right) 39 in. Order(left) visit in. Order(right) 11 Cinda Heeren / Geoffrey Tien 13
BST implementation • Binary search trees can be implemented using a reference structure • Tree nodes contain data and two pointers to nodes Node* leftchild data Node* rightchild Data to be stored in the tree (usually an object) References or pointers to other tree Nodes October 15, 2018 Cinda Heeren / Geoffrey Tien 14
BST search • To find a value in a BST search from the root node: – If the target is less than the value in the node search its left subtree – If the target is greater than the value in the node search its right subtree – Otherwise return true, (or a pointer to the data, or …) • How many comparisons? – One for each node on the path – Worst case: height of the tree + 1 October 15, 2018 Cinda Heeren / Geoffrey Tien 15
BST search example search(27); 17 27 October 15, 2018 Cinda Heeren / Geoffrey Tien 16
BST search example search(16); 17 13 16 October 15, 2018 Cinda Heeren / Geoffrey Tien 17
BST search example search(12); 17 13 9 11 October 15, 2018 Cinda Heeren / Geoffrey Tien 18
BST insertion • The BST property must hold after insertion • Therefore the new node must be inserted in the correct position – This position is found by performing a search – If the search ends at the (null) left child of a node make its left child refer to the new node – If the search ends at the right child of a node make its right child refer to the new node • The cost is about the same as the cost for the search algorithm, O(height) October 15, 2018 Cinda Heeren / Geoffrey Tien 19
BST insertion example Insert 43 47 Create new node Find position 32 63 Link node 19 43 10 7 41 23 12 October 15, 2018 54 37 30 44 79 53 43 Cinda Heeren / Geoffrey Tien 59 57 96 91 97 20
BST insertion example Create new BST 3 Insert 15 15 Insert 21 Insert 23 21 Insert 37 Search 45 23 How many operations for Search? Complexity? 37 October 15, 2018 Cinda Heeren / Geoffrey Tien 21
Find min, Find max • Find minimum: – From the root, keep following left child links until no more left child exists • Find maximum: – From the root, follow right child links until no more right child exists 43 18 68 12 33 7 27 9 October 15, 2018 52 39 50 21 56 67 Cinda Heeren / Geoffrey Tien 22
Readings for this lesson • Carrano & Henry – Chapter 15. 2 – 15. 3 (Binary/search tree) – Chapter 18. 1 (Dictionary) • Next class: – Chapter 15. 3, 16. 1 – 16. 2 (Binary search tree) October 15, 2018 Cinda Heeren / Geoffrey Tien 23
- Slides: 23