Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 BST Trees 5 38 149. 2 A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is.

Similar presentations


Presentation on theme: "1 BST Trees 5 38 149. 2 A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is."— Presentation transcript:

1 1 BST Trees 5 38 149

2 2 A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is smaller than the key of this node the key of every node in the right subtree is larger than the key of this node Note: Duplication nodes ? A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is smaller than the key of this node the key of every node in the right subtree is larger than the key of this node Note: Duplication nodes ? Binary search tree (BST) 5 38 149

3 3 Binary search tree 5 38 149 The left subtree and the right subtree are also BST (Recursion) No two nodes in a BST have the same key If we traverse a BST inorder, we list the key in ascending order

4 4 Some examples 8 15 10 212 614 3 4 16 1 7 9 3 5 8 8 4 26 137 5 12 1014 91115 13

5 5 Is this a BST? 5 38 179 This is NOT BST! Every node satisfies the following: -- the key of the left node is smaller than the its own key -- the key of the right node is larger than its own key Every node satisfies the following: -- the key of the left node is smaller than the its own key -- the key of the right node is larger than its own key This is an incorrect check of BST.

6 6 Search BST 8 4 26 137 5 12 1014 91115 13 target To find a key in a BST, we start at the root. Compare the target key with the key of the current node. - target == p->key, Done. - target key, go left - target > p->key, go right To find a key in a BST, we start at the root. Compare the target key with the key of the current node. - target == p->key, Done. - target key, go left - target > p->key, go right Note that the principle behind is similar to binary search... 5 Find

7 7 Basic Functions Search Find Min Find Max Insert(x) Delete

8 8 C++ Implementation of BST Search // Internal method to find an item in a subtree. // x is item to search for // t is the node that roots the tree // Return node containing the matched item. template BinaryNode * BinarySearchTree :: find( const Comparable & x, Node *t ) const { while( t != NULL ) { if( x element ) // element is the key value for each node t = t->left; else if( t->element < x ) t = t->right; else return t; // Match } return NULL; // Not found } // Internal method to find an item in a subtree. // x is item to search for // t is the node that roots the tree // Return node containing the matched item. template BinaryNode * BinarySearchTree :: find( const Comparable & x, Node *t ) const { while( t != NULL ) { if( x element ) // element is the key value for each node t = t->left; else if( t->element < x ) t = t->right; else return t; // Match } return NULL; // Not found }

9 9 Balance tree 8 4 26 137 5 12 1014 91115 13 1 15 2 The efficiency of BST search depends on the shape of the tree. If the tree is balance, (minimum height, very bushy), the search is fast (log(n) steps). If the tree is a long narrow chain, the search is slow (n steps) 14 3 4 5 log(16)=4 Compare this with sequential and binary search...

10 10 Binary Search Tree Class - FindMin/Max template BinaryNode * BinarySearchTree ::findMin( Node *t ) const{ if( t != NULL ){ while( t->left != NULL ) t = t->left; // the leftmost node } return t; } template BinaryNode * BinarySearchTree ::findMax( Node *t ) const{ If( t != NULL ) while( t->right != NULL ) t = t->right; // the rightmost node return t; }

11 11 Insert & Delete in BST First we’ll study simple-minded Insert and Delete procedure. They may result in highly unbalanced tree Then we’ll study a special kind of BST called AVL tree which maintains near balance in inserting and deleting.

12 12 Insert in BST (recursive version) // Internal method to insert into a subtree // x is the item to insert // t is the node that roots the tree // Set the new root // Throw an exception if x is already in t template void BinarySearchTree :: insert( const Comparable & x, Node * & t ) const { if( t == NULL ) t = new Node( x, NULL, NULL ); else if( x element ) insert( x, t->left ); else if( x > t->element) insert( x, t->right ); else throw DuplicateItemException( ); } 6 3 1158 9 2 10 512 4714 17 New nodes are always added as leaves.

13 13 Delete in BST  Case 1: If it has no children, that is, it is a leaf, we just remove it.

14 14 Delete in BST L  L Case 2: If it has only one child, (i.e. only one subtree), we splice out it. That is, we attach that subtree to the parent of the node.

15 15 Delete in BST, examples 6 16 15 9 10 512 714 17  6 16 15 9 10 12 7 14 17  6 16 15 9 10 12 7 17 Case 2: delete a node that has only one subtree.

16 16 Delete in BST Case 3: If it has nonempty left and right subtrees. Find the minimum node in right subtree, then copy its key value to X, and remove the min node from right subtree. Or Find the min node in right subtree, then swap it with the target node, and remove the target node Case 3: If it has nonempty left and right subtrees. Find the minimum node in right subtree, then copy its key value to X, and remove the min node from right subtree. Or Find the min node in right subtree, then swap it with the target node, and remove the target node RL  R’L Min in R

17 17 Delete Tree, example 6 3 1 15 14 92 10 512 48 16 7  15 14 10 12 3 1 2 4 16 9 8 6 7 Case 3: delete a node that has nonempty left and right subtrees. Case 3: delete a node that has nonempty left and right subtrees.

18 18 Binary Search Tree Binary search tree, using simple insert and delete procedures  the tree is nearly balance add - fast O(log n) delete a target - fast O(log n) search - fast O(log n)  the tree is highly unbalance, it becomes a singly linked list (the worst case) add, delete and search - slow O(n) effectively using sequential search to find a location


Download ppt "1 BST Trees 5 38 149. 2 A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is."

Similar presentations


Ads by Google