Download presentation

Presentation is loading. Please wait.

Published byLee Burroughs Modified about 1 year ago

1
Binary Search Tree Smt Genap

2
Outline Concept of Binary Search Tree (BST) BST operations ◦ Find ◦ Insert ◦ Remove Running time analysis of BST operations Smt Genap

3
Binary Search Tree: Properties Elements have keys (no duplicates allowed). For every node X in the tree, the values of all the keys in the left subtree are smaller than the key in X and the values of all the keys in the right subtree are larger than the key in X. The keys must be comparable. Smt Genap X

4
Binary Search Tree: Examples Smt Genap

5
Binary Search Tree: Examples Smt Genap

6
Basic Operations FindMin, FindMax, Find Insert Remove Smt Genap

7
FindMin Find node with the smallest value Algorithm: ◦ Keep going left until you reach a dead end! Code: BinaryNode findMin(BinaryNode t) { if (t != null) while (t.left != null) t = t.left; return t; } Smt Genap

8
FindMax Find node with the largest value Algorithm: ◦ Keep going right until you reach a dead end! Code: BinaryNode findMax(BinaryNode t) { if (t != null) while (t.right != null) t = t.right; return t; } Smt Genap

9
Find You are given an element to find in a BST. If it exists, return the node. If not, return null. Algorithm? Code? Smt Genap

10
Find: Implementation BinaryNode find(Type x, BinaryNode t) { while(t!=null) { if(x.compareTo(t.element)<0) t = t.left; else if(x.compareTo(t.element)>0) t = t.right; else return t; // Match } return null; // Not found } Smt Genap

11
Insertion: Principle When inserting a new element into a binary search tree, it will always become a leaf node. Smt Genap

12
Insertion: Algorithm To insert X into a binary search tree: ◦ Start from the root ◦ If the value of X < the value of the root: X should be inserted in the left sub-tree. ◦ If the value of X > the value of the root: X should be inserted in the right sub-tree. Remember that a sub-tree is also a tree. We can implement this recursively! Smt Genap

13
Insertion: Implementation BinaryNode insert(Type x, BinaryNode t) { if (t == null) t = new BinaryNode (x); else if(x.compareTo(t.element)<0) t.left = insert (x, t.left); else if(x.compareTo(t.element)>0) t.right = insert (x, t.right); else throw new DuplicateItemException(x); return t; } Smt Genap

14
Removing An Element Smt Genap

15
Removing An Element: Algorithm If the node is a leaf, simply delete it. If the node has one child, adjust parent’s child reference to bypass the node. If the node has two children: ◦ Replace the node’s element with the smallest element in the right subtree and then remove that node, or ◦ Replace the node’s element with the largest element in the left subtree and then remove that node Introduces new sub-problems: ◦ removeMin: ◦ Alternatively, removeMax Smt Genap

16
Removing Leaf Smt Genap

17
Removing Node With 1 Child Smt Genap

18
Removing Node With 1 Child Smt Genap

19
removeMin BinaryNode removeMin(BinaryNode t) { if (t == null) throw new ItemNotFoundException(); else if (t.left != null) { t.left = removeMin(t.left); return t; } else return t.right; } Smt Genap

20
Removing Node With 2 Children Smt Genap

21
Removing Node With 2 Children Smt Genap

22
Removing Node With 2 Children Smt Genap

23
Removing Root Smt Genap

24
Remove BinaryNode remove(Type x, BinaryNode t) { if (t == null) throw new ItemNotFoundException(); if (x.compareTo(t.element)<0) t.left = remove(x, t.left); else if(x.compareTo(t.element)>0) t.right = remove(x, t.right); else if (t.left!=null && t.right != null) { t.element = findMin(t.right).element; t.right = removeMin(t.right); } else { if(t.left!=null) t=t.left; else t=t.right; } return t; } Smt Genap

25
Find k-th element Smt Genap SLSL SRSR X k < S L + 1 SLSL SRSR X k == S L + 1 SLSL SRSR X k > S L + 1

26
Find k-th element BinaryNode findKth(int k, BinaryNode t) { if (t == null) throw exception; int leftSize = (t.left != null) ? t.left.size : 0; if (k <= leftSize ) return findKth (k, t.left); else if (k == leftSize + 1) return t; else return findKth ( k - leftSize - 1, t.right); } Smt Genap

27
Analysis Running time for: ◦ Insert? ◦ Find min? ◦ Remove? ◦ Find? Average case: O(log n) Worst case: O(n) Smt Genap

28
Summary Binary Search Tree maintains the order of the tree. Each node should be comparable All operations take O(log n) - average case, when the tree is equally balanced. All operations will take O(n) - worst case, when the height of the tree equals the number of nodes. Smt Genap

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google