Lecture 16: ADTs, Sets, Maps, Binary Search Trees

10/2/2020

Abstract Data Types

Abstract Data Types (ADT)

Another example of an ADT: The Stack

GrabBag ADT

Abstract Data Types in Java

Collections

Java Libraries

Binary Search Trees

AnLysis of an OrderedLinkedListSet

Optimization: Change the Entry Point

BST Definitions

Tree

Rooted Trees and Rooted Binary Trees

Binary Search Trees

Finding a searchKey in a BST

static BST find(BST T, key sk) { if (T == null) return null; if (sk.equals(T.key)) return T; else if (sk < T.key) return find(T.left, sk); else return find(T.right, sk); }

BSTs

BST Operations: Insert

Inserting a new key into a BST

static BST insert(BST T, Key ik) { if (T == null) return new BST(ik); if (ik < T.key) T.left = insert(T.left, ik); else if (ik > T.key) T.right = insert(T.right, ik); return T; }

BST Operation: Delete

Deleting from a BST

Case 1: Deleting from a BST: Key with no Children

Case 2: Deleting from a BST: Key with one Child

Case 3: Deleting from a BST: Deletion with two Children

Sets vs. Maps, Summary

Sets vs. Maps

Summary

BST Implementation Tips

Tips for BST Lab

CSM Review

interface List<E> { boolean add(E element); void add(int index, E element); E get(int index); int size(); }
interface Map<K, V> { V put(K key, V value); V get(K key); boolean containsKey(Object key); Set<K> keySet(); }
interface Set<E> { boolean add(E element); boolean contains(Object object); int size(); boolean remove(Object object); }