# Binary Search Tree - PowerPoint PPT Presentation

PPT – Binary Search Tree PowerPoint presentation | free to download - id: 7b68cc-OGRmN

The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
Title:

## Binary Search Tree

Description:

### Binary Search Tree Outline Concept of Binary Search Tree (BST) BST operations Find Insert Remove Running time analysis of BST operations Binary Search Tree ... – PowerPoint PPT presentation

Number of Views:4
Avg rating:3.0/5.0
Slides: 29
Provided by: dn5
Category:
Tags:
Transcript and Presenter's Notes

Title: Binary Search Tree

1
Binary Search Tree
2
Outline
• Concept of Binary Search Tree (BST)
• BST operations
• Find
• Insert
• Remove
• Running time analysis of BST operations

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
ltX
gtX
4
Binary Search Tree Examples
7
9
2
1
5
3
5
Binary Search Tree Examples
3
3
1
1
2
2
1
3
3
2
1
2
2
1
3
6
Basic Operations
• FindMin, FindMax, Find
• Insert
• Remove

7
FindMin
• Find node with the smallest value
• Algorithm
• Keep going left until you reach a dead end!
• Code
• BinaryNodeltTypegt findMin(BinaryNodeltTypegt t)
• if (t ! null)
• while (t.left ! null)
• t t.left
• return t

8
FindMax
• Find node with the largest value
• Algorithm
• Keep going right until you reach a dead end!
• Code
• BinaryNodeltTypegt findMax(BinaryNodeltTypegt t)
• if (t ! null)
• while (t.right ! null)
• t t.right
• return t

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
3
10
Find Implementation
• BinaryNodeltTypegt find(Type x, BinaryNodeltTgt t)
• while(t!null)
• if(x.compareTo(t.element)lt0)
• t t.left
• else if(x.compareTo(t.element)gt0)
• t t.right
• else
• return t // Match

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

12
Insertion Algorithm
• To insert X into a binary search tree
• Start from the root
• If the value of X lt the value of the rootX
should be inserted in the left sub-tree.
• If the value of X gt 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!

13
Insertion Implementation
• BinaryNodeltTypegt insert(Type x, BinaryNodeltTypegt
t)
• if (t null)
• t new BinaryNodeltTypegt(x)
• else if(x.compareTo(t.element)lt0)
• t.left insert (x, t.left)
• else if(x.compareTo(t.element)gt0)
• t.right insert (x, t.right)
• else
• throw new DuplicateItemException(x)
• return t

14
Removing An Element
4
6
5
15
Removing An Element Algorithm
• If the node is a leaf, simply delete it.
• If the node has one child, adjust parents child
reference to bypass the node.
• If the node has two children
• Replace the nodes element with the smallest
element in the right subtree and then remove that
node, or
• Replace the nodes element with the largest
element in the left subtree and then remove that
node
• Introduces new sub-problems
• removeMin
• Alternatively, removeMax

16
Removing Leaf
8
12
4
6
1
5
3
17
Removing Node With 1 Child
8
12
4
6
1
5
3
18
Removing Node With 1 Child
8
12
4
6
1
5
3
19
removeMin
• BinaryNodeltTypegt removeMin(BinaryNodeltTypegt t)
• if (t null)
• throw new ItemNotFoundException()
• else if (t.left ! null)
• t.left removeMin(t.left)
• return t
• else
• return t.right

20
Removing Node With 2 Children
7
9
2
1
5
3
4
21
Removing Node With 2 Children
7
2
9
3
1
5
3
4
22
Removing Node With 2 Children
7
2
9
2
3
1
5
3
4
23
Removing Root
9
24
Remove
• BinaryNodeltTypegt remove(Type x, BinaryNodeltTypegt
t)
• if (t null)
• throw new ItemNotFoundException()
• if (x.compareTo(t.element)lt0)
• t.left remove(x, t.left)
• else if(x.compareTo(t.element)gt0)
• 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) tt.left
• else tt.right
• return t

25
Find k-th element
X
X
X
SL
SR
SL
SR
SL
SR
k lt SL 1
k SL 1
k gt SL 1
26
Find k-th element
• BinaryNodeltTypegt findKth(int k, BinaryNodeltTypegt
t)
• if (t null) throw exception
• int leftSize (t.left ! null) ?
• t.left.size 0
• if (k lt leftSize )
• return findKth (k, t.left)
• else if (k leftSize 1)
• return t
• else
• return findKth ( k - leftSize - 1,
t.right)

27
Analysis
• Running time for
• Insert?
• Find min?
• Remove?
• Find?
• Average case O(log n)
• Worst case O(n)

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.