Binary Search Trees

 

Objectives:

  • Define Binary Search Trees (BST)
  • Describe Binary Search Algorithm
  • Explain an in-order traversal of a BST
  • Describe an unbalanced BST
  • Describe how to balance a BST

Binary Search Tree:

A binary search tree (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction that the key in any node is larger than the keys in all nodes in that node's left subtree and smaller than the keys in all nodes in that node's right subtree

Binary Search Tree:

A binary search tree (BST) is a binary tree where...
smaller nodes go on the left and larger nodes go on the right.

Question:

What is the maximum number of links a node in a BST can have?

Answer

What is the maximum number of links a node in a BST can have?

 

2

 

It has at maximum a left and right node NOT an indefinite number of children

Why use a BST?

Remember...

 Each comparison allows the operations to skip about half of the tree

Question

What is the big O to Search, Insert, or Delete in a BST?

Answer

Worst case is O(n)

Typical case is closer to O(log n)

Search...

  • Check to see if current node is searched node
  • If not, if value is bigger go right
  • If not, if value is smaller go left

Question: How does this compare to binary search in a sorted array?

Insert...

  • Check to see if current node is bigger or smaller than pushed value, move down the tree accordingly
  • Continue the same process until there is no node in the next position
  • Insert node at that new position

Question: How does this compare to binary search in a sorted array?

Delete...

3 possible cases:

  • No Children
    • Remove the node from the tree
  • 1 Child
    • Remove the node and replace it with it's child
  • 2 Children
    • choose either the in-order successor (right sub-trees left most child),
    • or the in-order predecessor (left sub-tree's right most child)
    • copy that element into the position being removed

The 2 children case is the complex case

Question: How does this compare to binary search in a sorted array?

BST In-order Traversal

function InOrder(BST, visit)
    if BST.left
        InOrder(BST.left, visit)
    visit(BST.value)
    if BST.right
        InOrder(BST.right, visit)

Priority Queue

In computer science, a priority queue is an abstract data type which is like a regular queue or stack data structure, but where additionally each element has a "priority" associated with it. In a priority queue, an element with high priority is served before an element with low priority.

Can we use a BST to implement a priority Queue? how?

Balancing BST

  • Grab the middle node, call it the root, and balance from there

Binary Search Trees

 

Objectives:

  • Define Binary Search Trees (BST)
  • Describe Binary Search Algorithm
  • Explain an in-order traversal of a BST
  • Describe an unbalanced BST
  • Describe how to balance a BST

Binary Search Trees

By Hamid Aghdaee

Binary Search Trees

  • 803