Binary Search Tree - PowerPoint PPT Presentation

Loading...

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



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
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
Learn more at: http://staf.cs.ui.ac.id
Category:
Tags: binary | search | tree

less

Write a Comment
User Comments (0)
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
  • return null // Not found

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.
About PowerShow.com