Binary Search Trees (BST)

Slides:



Advertisements
Similar presentations
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Advertisements

AVL Search Trees Inserting in an AVL tree Insertion implementation Deleting from an AVL tree.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
Lecture 13 AVL Trees King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
Trees, Binary Trees, and Binary Search Trees COMP171.
AVL Search Trees What is an AVL Tree? AVL Tree Implementation.
1 Trees Definition of a Tree Tree Terminology Importance of Trees Implementation of Trees Binary Trees –Definition –Full and Complete Binary Trees –Implementation.
1 Trees What is a Tree? Tree terminology Why trees? What is a general tree? Implementing trees Binary trees Binary tree implementation Application of Binary.
AVL Search Trees Inserting in an AVL tree Insertion implementation Deleting from an AVL tree.
1 Binary Search Trees (BST) What is a Binary search tree? Why Binary search trees? Binary search tree implementation Insertion in a BST Deletion from a.
1 Trees What is a Tree? Tree terminology Why trees? What is a general tree? Implementing trees Binary trees Binary tree implementation Application of Binary.
1 Binary Search Trees (BST) What is a Binary search tree? Why Binary search trees? Binary search tree implementation Insertion in a BST Deletion from a.
AVL Search Trees What is an AVL Tree? AVL Tree Implementation. Why AVL Trees? Rotations. Insertion into an AVL tree Deletion from an AVL tree.
Chapter 9 contd. Binary Search Trees Anshuman Razdan Div of Computing Studies
1 Trees What is a Tree? Tree terminology Why trees? General Trees and their implementation N-ary Trees N-ary Trees implementation Implementing trees Binary.
1 BST Trees 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.
Binary Tree. Binary Trees – An Informal Definition A binary tree is a tree in which no node can have more than two children Each node has 0, 1, or 2 children.
CSCE 3110 Data Structures & Algorithm Analysis Binary Search Trees Reading: Chap. 4 (4.3) Weiss.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Binary Search Trees Binary Search Trees (BST)  the tree from the previous slide is a special kind of binary tree called a binary.
1 Chapter 10 Trees. 2 Definition of Tree A tree is a set of linked nodes, such that there is one and only one path from a unique node (called the root.
Trees, Binary Trees, and Binary Search Trees COMP171.
1 Binary Search Trees (BSTs) What is a Binary search tree? Why Binary search trees? Binary search tree implementation Insertion in a BST Deletion from.
Topic 15 The Binary Search Tree ADT Binary Search Tree A binary search tree (BST) is a binary tree with an ordering property of its elements, such.
Topic 19 Binary Search Trees "Yes. Shrubberies are my trade. I am a shrubber. My name is 'Roger the Shrubber'. I arrange, design, and sell shrubberies."
Lec 15 Oct 18 Binary Search Trees (Chapter 5 of text)
Chapter 11 B Trees. © 2004 Pearson Addison-Wesley. All rights reserved 11 B-2 The ADT Binary Search Tree A deficiency of the ADT binary tree which is.
1 Binary Trees and Binary Search Trees Based on Dale & Co: Object-Oriented Data Structures using C++ (graphics)
ADT Binary Search Tree Ellen Walker CPSC 201 Data Structures Hiram College.
CSCE 3110 Data Structures & Algorithm Analysis
BCA-II Data Structure Using C
CSCE 3110 Data Structures & Algorithm Analysis
ITEC324 Principle of CS III
Trees Chapter 11 (continued)
Binary Trees and Binary Search Trees
Trees Chapter 11 (continued)
BST Trees
Binary search tree. Removing a node
Binary Search Trees.
Week 6 - Wednesday CS221.
Binary Search Tree (BST)
Chapter 10 Search Trees 10.1 Binary Search Trees Search Trees
AVL Search Trees Introduction What is an AVL Tree?
Binary Search Tree Chapter 10.
Lecture 22 Binary Search Trees Chapter 10 of textbook
Trees What is a Tree? Tree terminology Why trees?
Chapter 16 Tree Implementations
ITEC 2620M Introduction to Data Structures
Binary Search Trees Why this is a useful data structure. Terminology
Binary Trees, Binary Search Trees
Chapter 22 : Binary Trees, AVL Trees, and Priority Queues
Binary Search Trees.
Binary Heaps What is a Binary Heap?
Stacks Linked Lists Queues Heaps Hashes
Trees 3: The Binary Search Tree
Lec 12 March 9, 11 Mid-term # 1 (March 21?)
Search Sorted Array: Binary Search Linked List: Linear Search
Binary Search Trees.
Binary Search Trees A special case of a Binary Tree
Binary Trees, Binary Search Trees
Non-Linear Structures
AVL Search Trees Inserting in an AVL tree Insertion implementation
AVL Search Trees Inserting in an AVL tree Insertion implementation
Search Sorted Array: Binary Search Linked List: Linear Search
Binary Trees, Binary Search Trees
Chapter 11 Trees © 2011 Pearson Addison-Wesley. All rights reserved.
AVL Search Trees What is an AVL Tree? AVL Tree Implementation.
AVL Search Trees Inserting in an AVL tree Insertion implementation
Presentation transcript:

Binary Search Trees (BST) What is a Binary search tree? Why Binary search trees? Binary search tree implementation Insertion in a BST Deletion from a BST

Binary Search Trees (Definition) A binary search tree (BST) is a binary tree that is empty or that satisfies the BST ordering property: The key of each node is greater than each key in the left subtree, if any, of the node. The key of each node is less than each key in the right subtree, if any, of the node. Thus, each key in a BST is unique. Examples: 6 8 2 4 1 7 9 5 3 A B C D

Why BST? Deletion Insertion Retrieval Data Structure O(log n) FAST BST BSTs provide good logarithmic time performance in the best and average cases. Average case complexities of using linear data structures compared to BSTs: Deletion Insertion Retrieval Data Structure O(log n) FAST BST O(n) SLOW FAST* Sorted Array Sorted Linked List *using binary search

Binary Search Tree Implementation The BinarySearchTree class inherits the instance variables key, left, and right of the BinaryTree class: public class BinarySearchTree extends BinaryTree implements SearchableContainer { private BinarySearchTree getLeftBST(){ return (BinarySearchTree) getLeft( ) ; } private BinarySearchTree getRightBST( ){ return (BinarySearchTree) getRight( ) ; // . . .

Binary Search Tree Implementation (Cont’d) The find method of the BinarySearchTree class: public Comparable find(Comparable comparable) { if(isEmpty()) return null; Comparable key = (Comparable) getKey(); if(comparable.compareTo(key)==0) return key; else if (comparable.compareTo(key)<0) return getLeftBST().find(comparable); else return getRightBST().find(comparable); }

Binary Search Tree Implementation (Cont’d) The findMin method of the BinarySearchTree class: By the BST ordering property, the minimum key is the key of the left-most node that has an empty left-subtree. public Comparable findMin() { if(isEmpty()) return null; if(getLeftBST().isEmpty()) return (Comparable)getKey(); else return getLeftBST().findMin(); }

Binary Search Tree Implementation (Cont’d) The findMax method of the BinarySearchTree class: By the BST ordering property, the maximum key is the key of the right-most node that has an empty right-subtree. 20 30 10 15 4 25 40 35 32 7 9 public Comparable findMax() { if(isEmpty()) return null; if(getRightBST().isEmpty()) return (Comparable)getKey(); else return getRightBST().findMax(); }

Insertion in a BST By the BST ordering property, a new node is always inserted as a leaf node. The insert method, given in the next page, recursively finds an appropriate empty subtree to insert the new key. It then transforms this empty subtree into a leaf node by invoking the attachKey method: public void attachKey(Object obj) { if(!isEmpty()) throw new InvalidOperationException(); else { key = obj; left = new BinarySearchTree(); right = new BinarySearchTree(); }

Insertion in a BST public void insert(Comparable comparable){ if(isEmpty()) attachKey(comparable); else { Comparable key = (Comparable) getKey(); if(comparable.compareTo(key)==0) throw new IllegalArgumentException("duplicate key"); else if (comparable.compareTo(key)<0) getLeftBST().insert(comparable); else getRightBST().insert(comparable); } 5 6 8 2 4 7 9 3 6 8 2 4 7 9 3 6 8 2 4 7 9 3 6 8 2 4 7 9 3 5 5 1 1 1 1 5

Deletion in a BST There are three cases: The node to be deleted is a leaf node. The node to be deleted has one non-empty child. The node to be deleted has two non-empty children. CASE 1: DELETING A LEAF NODE Convert the leaf node into an empty tree by using the detachKey method: // In Binary Tree class public Object detachKey( ){ if(! isLeaf( )) throw new InvalidOperationException( ) ; else { Object obj = key ; key = null ; left = null ; right = null ; return obj ; }

Deleting a leaf node (cont’d) Example: Delete 5 in the tree below: 7 7 15 2 4 1 8 40 6 3 9 5 Delete 5 2 4 1 15 8 40 9 3 6

Deleting a one-child node CASE 2: THE NODE TO BE DELETED HAS ONE NON-EMPTY CHILD (a) The right subtree of the node x to be deleted is empty. Example: // Let target be a reference to the node x. BinarySearchTree temp = target.getLeftBST(); target.key = temp.key; target.left = temp.left; target.right = temp.right; temp = null; target 20 35 10 8 5 22 40 3 25 6 target Delete 10 20 temp 5 35 3 8 22 40 6 25

Deleting a one-child node (cont’d) (b) The left subtree of the node x to be deleted is empty. Example: // Let target be a reference to the node x. BinarySearchTree temp = target.getRightBST(); target.key = temp.key; target.left = temp.left; target.right = temp.right; temp = null; 7 15 2 4 1 12 40 6 3 5 target 14 9 7 15 2 4 1 8 40 6 3 12 5 target temp 14 9 Delete 8

CASE 3: DELETING A NODE THAT HAS TWO NON-EMPTY CHILDREN DELETION BY COPYING: METHOD#1 Copy the minimum key in the right subtree of x to the node x, then delete the one-child or leaf-node with this minimum key. Example: 7 15 2 4 1 8 40 6 3 9 5 Delete 7

DELETING A NODE THAT HAS TWO NON-EMPTY CHILDREN DELETION BY COPYING: METHOD#2 Copy the maximum key in the left subtree of x to the node x, then delete the one-child or leaf-node with this maximum key. Example: 7 15 2 4 1 8 40 6 3 9 5 Delete 7 6 15 2 4 1 8 40 5 3 9

Two-child deletion method#1 code // find the minimum key in the right subtree of the target node Comparable min = target.getRightBST().findMin(); // copy the minimum value to the target target.key = min; // delete the one-child or leaf node having the min target.getRightBST().withdraw(min); All the different cases for deleting a node are handled in the withdraw (Comparable key) method of BinarySearchTree class