Topic 19 Binary Search Trees

Slides:



Advertisements
Similar presentations
Comp 122, Spring 2004 Binary Search Trees. btrees - 2 Comp 122, Spring 2004 Binary Trees  Recursive definition 1.An empty tree is a binary tree 2.A node.
Advertisements

S. Sudarshan Based partly on material from Fawzi Emad & Chau-Wen Tseng
A Binary Search Tree Implementation Chapter Chapter Contents Getting Started An Interface for the Binary Search Tree Duplicate Entries Beginning.
AA Trees another alternative to AVL trees. Balanced Binary Search Trees A Binary Search Tree (BST) of N nodes is balanced if height is in O(log N) A balanced.
1 Trees most slides taken from Mike Scott, UT Austin.
A Binary Search Tree Implementation Chapter Chapter Contents Getting Started An Interface for the Binary Search Tree Duplicate Entries Beginning.
1 Binary Search Trees (BSTs). 2 Consider the search operation FindKey (): find an element of a particular key value in a binary tree. This operation takes.
Chapter 13 Binary Search Trees. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Chapter Objectives Define a binary search tree abstract.
CS21, Tia Newhall Binary Search Trees (BST) 1.Hierarchical data structure with a single pointer to root node 2.Each node has at most two child nodes (a.
1 BST Trees A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is.
Binary Search Trees. BST Properties Have all properties of binary tree Items in left subtree are smaller than items in any node Items in right subtree.
CSCE 3110 Data Structures & Algorithm Analysis Binary Search Trees Reading: Chap. 4 (4.3) Weiss.
Trees, Binary Search Trees, Recursion, Project 2 Bryce Boe 2013/08/01 CS24, Summer 2013 C.
Lecture Objectives  To learn how to use a tree to represent a hierarchical organization of information  To learn how to use recursion to process trees.
© 2011 Pearson Addison-Wesley. All rights reserved 11 B-1 Chapter 11 (continued) Trees.
Binary Search Trees Binary Search Trees (BST)  the tree from the previous slide is a special kind of binary tree called a binary.
1 Binary Search Trees (BSTs) What is a Binary search tree? Why Binary search trees? Binary search tree implementation Insertion in a BST Deletion from.
Topic 15 The Binary Search Tree ADT Binary Search Tree A binary search tree (BST) is a binary tree with an ordering property of its elements, such.
Topic 19 Binary Search Trees "Yes. Shrubberies are my trade. I am a shrubber. My name is 'Roger the Shrubber'. I arrange, design, and sell shrubberies."
Binary Search Tree Traversal Methods. How are they different from Binary Trees?  In computer science, a binary tree is a tree data structure in which.
1 Trees, Trees, and More Trees. 2 By looking at forests of terms, awesome animations, and complete examples, we hope to get at the root of trees. Hopefully,
Lec 15 Oct 18 Binary Search Trees (Chapter 5 of text)
Chapter 19: Binary Search Trees or How I Learned to Love AVL Trees and Balance The Tree Group 6: Tim Munn.
David Stotts Computer Science Department UNC Chapel Hill.
1 Chapter 7 Objectives Upon completion you will be able to: Create and implement binary search trees Understand the operation of the binary search tree.
Week 10 - Friday.  What did we talk about last time?  Graph representations  Adjacency matrix  Adjacency lists  Depth first search.
1 Binary Trees and Binary Search Trees Based on Dale & Co: Object-Oriented Data Structures using C++ (graphics)
ADT Binary Search Tree Ellen Walker CPSC 201 Data Structures Hiram College.
Binary Search Trees (BST)
Tree Data Structures. Heaps for searching Search in a heap? Search in a heap? Would have to look at root Would have to look at root If search item smaller.
1 Introduction to trees Instructor: Dimitrios Kosmopoulos.
Week 15 – Wednesday.  What did we talk about last time?  Review up to Exam 1.
2014-T2 Lecture 27 School of Engineering and Computer Science, Victoria University of Wellington  Lindsay Groves, Marcus Frean, Peter Andreae, and Thomas.
TREES From root to leaf. Trees  A tree is a non-linear collection  The elements are in a hierarchical arrangement  The elements are not accessible.
Binary Search Trees Chapter 7 Objectives
AA Trees.
CSCE 3110 Data Structures & Algorithm Analysis
CSCE 3110 Data Structures & Algorithm Analysis
Trees Chapter 11 (continued)
CSE 373 Binary search trees; tree height and balance
Recursive Objects (Part 4)
Trees Chapter 11 (continued)
A Binary Search Tree Implementation
BST Trees
Week 6 - Wednesday CS221.
Binary Search Tree Chapter 10.
Trees.
COMP 103 Binary Search Trees.
Binary Search Trees -Monty Python and The Holy Grail
Topic 18 Binary Search Trees
Binary Search Trees.
Binary Tree and General Tree
Chapter 22 : Binary Trees, AVL Trees, and Priority Queues
Binary Search Trees.
Map interface Empty() - return true if the map is empty; else return false Size() - return the number of elements in the map Find(key) - if there is an.
Lec 12 March 9, 11 Mid-term # 1 (March 21?)
Binary Search Tree AVL Tree
- Alan Perlis Topic 24 Heaps "You think you know when you can learn,
Topic 18 Binary Trees "A tree may grow a thousand feet tall, but its leaves will return to its roots." -Chinese Proverb.
Lecture 12 CS203 1.
Binary Search Trees A special case of a Binary Tree
Non-Linear Structures
CSC 143 Binary Search Trees.
Data Structures II AP Computer Science
Trees.
Search Sorted Array: Binary Search Linked List: Linear Search
Data Structures Using C++ 2E
Presentation transcript:

Topic 19 Binary Search Trees "Yes. Shrubberies are my trade. I am a shrubber. My name is 'Roger the Shrubber'. I arrange, design, and sell shrubberies." -Monty Python and The Holy Grail

The Problem with Linked Lists Accessing a item from a linked list takes O(N) time for an arbitrary element Binary trees can improve upon this and reduce access to O(log N) time for the average case Expands on the binary search technique and allows insertions and deletions Worst case degenerates to O(N) but this can be avoided by using balanced trees (AVL, Red-Black) CS314 Binary Search Trees

Binary Search Trees A binary search tree is a binary tree in which every node's left subtree holds values less than the node's value, and every right subtree holds values greater than the node's value. A new node is added as a leaf. root parent 17 < > 11 19 right child left child CS314 Binary Search Trees

BST Insertion Add the following values one at a time to an initially empty binary search tree using the naïve algorithm: 90 20 9 98 10 28 -25 What is the resulting tree? CS314 Binary Search Trees

Traversals What is the result of an inorder traversal of the resulting tree? How could a preorder traversal be useful? CS314 Binary Search Trees

Clicker Question 1 After adding N distinct elements in random order to a Binary Search Tree what is the expected height of the tree? O(N1/2) O(logN) O(N) O(NlogN) O(N2) CS314 Binary Search Trees

Clicker Question 1 After adding N distinct elements to a Binary Search Tree what is the worst case height of the tree? O(N1/2) O(logN) O(N) O(NlogN) O(N2) CS314 Binary Search Trees

Node for Binary Search Trees public class BSTNode<E extends Comparable<E> { private Comparable<E> myData; private BSTNode<E> myLeft; private BSTNode<E> myRightC; public BinaryNode(E item) { myData = item; } public E getValue() { return myData; } public BinaryNode<E> getLeft() { return myLeft; } public BinaryNode<E> getRight() { return myRight; } public void setLeft(BSTNode<E> b) { myLeft = b; } // setRight not shown } CS314 Binary Search Trees

Worst Case Performance Insert the following values into an initially empty binary search tree using the traditional, naïve algorithm: 2 3 5 7 11 13 17 What is the height of the tree? What is the worst case height of a BST? CS314 Binary Search Trees

More on Implementation Many ways to implement BSTs Using nodes is just one and even then many options and choices public class BinarySearchTree<E extends Comparable<E>> { private BSTNode<E> root; private int size; CS314 Binary Search Trees

Add an Element, Recursive CS314 Binary Search Trees

Add an Element, Iterative CS314 Binary Search Trees

Clicker Question 2 What are the best case and worst case order to add N distinct elements, one at a time, to an initially empty binary search tree? Best Worst O(N) O(N) O(NlogN) O(NlogN) O(N) O(NlogN) O(NlogN) O(N2) O(N2) O(N2) // given int[] data // no duplicates in // data BST<Integer> b = new BST<Integer>(); for(int x : data) b.add(x); CS314 Binary Search Trees

Performance of Binary Trees For the three core operations (add, access, remove) a binary search tree (BST) has an average case performance of O(log N) Even when using the naïve insertion / removal algorithms no checks to maintain balance balance achieved based on the randomness of the data inserted CS314 Binary Search Trees

Remove an Element Three cases node is a leaf, 0 children (easy) node has 1 child (easy) node has 2 children (interesting) CS314 Binary Search Trees

Properties of a BST The minimum value is in the left most node The maximum value is in the right most node useful when removing an element from the BST CS314 Binary Search Trees

Alternate Implementation In class examples of dynamic data structures have relied on null terminated ends. Use null to show end of list, no children Alternative form use structural recursion and polymorphism CS314 Binary Search Trees

BST Interface public interface BST { public int size(); public boolean contains(Comparable obj); public boolean add(Comparable obj); } CS314 Binary Search Trees

EmptyBST public class EmptyBST implements BST { private static EmptyBST theOne = new EmptyBST(); private EmptyBST(){} public static EmptyBST getEmptyBST(){ return theOne; } public NEBST add(Comparable obj) { return new NEBST(obj); } public boolean contains(Comparable obj) { return false; } public int size() { return 0; } } CS314 Binary Search Trees

Non Empty BST – Part 1 public class NEBST implements BST { private Comparable data; private BST left; private BST right; public NEBST(Comparable d){ data = d; right = EmptyBST.getEmptyBST(); left = EmptyBST.getEmptyBST(); } public BST add(Comparable obj) { int val = obj.compareTo( data ); if( val < 0 ) left = left.add( obj ); else if( val > 0 ) right = right.add( obj ); return this; CS314 Binary Search Trees

Non Empty BST – Part 2 public boolean contains(Comparable obj){ int val = obj.compareTo(data); if( val == 0 ) return true; else if (val < 0) return left.contains(obj); else return right.contains(obj); } public int size() { return 1 + left.size() + right.size(); CS314 Binary Search Trees