Download presentation

Presentation is loading. Please wait.

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. X <X >X Smt Genap

4
**Binary Search Tree: Examples**

7 9 2 1 5 6 3 Smt Genap

5
**Binary Search Tree: Examples**

3 3 1 1 2 2 1 3 3 2 1 2 2 1 3 Smt Genap

6
**Basic Operations FindMin, FindMax, Find Insert Remove**

Smt Genap

7
**FindMin Find node with the smallest value Algorithm: Code:**

Keep going left until you reach a dead end! Code: BinaryNode<Type> findMin(BinaryNode<Type> t) { if (t != null) while (t.left != null) t = t.left; return t; } Smt Genap

8
**FindMax Find node with the largest value Algorithm: Code:**

Keep going right until you reach a dead end! Code: BinaryNode<Type> findMax(BinaryNode<Type> 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? 7 9 2 1 5 6 3 Smt Genap

10
Find: Implementation BinaryNode<Type> find(Type x, BinaryNode<T> 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. 10 2 3 15 1 5 6 12 14 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<Type> insert(Type x, BinaryNode<Type> t) { if (t == null) t = new BinaryNode<Type>(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 8 4 5 12 1 6 3 4 6 5 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 8 12 4 6 1 3 5 Smt Genap

17
**Removing Node With 1 Child**

8 12 4 6 1 3 5 Smt Genap

18
**Removing Node With 1 Child**

8 12 4 6 1 3 5 Smt Genap

19
removeMin BinaryNode<Type> removeMin(BinaryNode<Type> 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**

7 9 2 1 5 3 4 Smt Genap

21
**Removing Node With 2 Children**

7 2 9 3 3 1 5 3 4 Smt Genap

22
**Removing Node With 2 Children**

7 2 9 3 2 1 5 3 4 Smt Genap

23
Removing Root 7 2 3 12 1 5 4 10 14 9 11 9 Smt Genap

24
Remove BinaryNode<Type> remove(Type x, BinaryNode<Type> 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 X X X SL SR SL SR SL SR k < SL + 1 k == SL + 1**

Smt Genap

26
Find k-th element BinaryNode<Type> findKth(int k, BinaryNode<Type> 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: Average case: O(log n) Worst case: O(n)**

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

OK

IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture20.

IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture20.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on transportation and excretion in human body Ppt on applications of ultrasound in physics Ppt on causes of road accidents Ppt on 21st century skills for students Ppt on squid proxy server Ppt on maths for class 2 Ppt on airbag in cars Download ppt on turbo generator manufacturers Knowledge based view ppt on iphone Ppt on natural resources