Recursion. Presentation Subtitle. Brad Miller David Ranum 1 12/19/2005. Luther College. Binary Search Trees. 1 Department of Computer Science

Size: px
Start display at page:

Download "Recursion. Presentation Subtitle. Brad Miller David Ranum 1 12/19/2005. Luther College. Binary Search Trees. 1 Department of Computer Science"

Transcription

1 Presentation Subtitle Brad Miller David Ranum 1 1 Department of Computer Science Luther College 12/19/2005

2 Outline 1 Binary Search Trees

3 Outline Binary Search Trees 1 Binary Search Trees

4 BinaryTree() Create a new, empty binary tree. put(key,val) Add a new key-value pair to the tree. get(key) Given a key, return the value stored in the tree or None otherwise. delete_key(key) Delete the key-value pair from the tree. length() Return the number of key-value pairs stored in the tree. has_key(key) Return True if the given key is in the dictionary. operators We can use the above methods to overload the [] operators for both assignment and lookup. In addition, we can use has_key to override the in operator.

5 Outline Binary Search Trees 1 Binary Search Trees

6 A Simple Binary Search Tree

7 The Binary Search Tree Outer Class I 1 c l a s s BinarySearchTree: 2 def init (self): 3 self.root = None 4 self.size = d e f put(self,key,val): 7 i f self.root: 8 self.root.put(key,val) 9 e l s e : 10 self.root = TreeNode(key,val) 11 self.size = self.size def setitem (self,k,v): 14 self.put(k,v) def get(self,key): 17 i f self.root:

8 The Binary Search Tree Outer Class II 18 return self.root.get(key) 19 e l s e : 20 return None def getitem (self,key): 23 return self.get(key) d e f has_key(self,key): 26 i f self.root.get(key): 27 return True 28 e l s e : 29 return False def length(self): 32 return self.size def len (self):

9 The Binary Search Tree Outer Class III 35 return self.size d e f delete_key(self,key): 38 i f self.size > 1: 39 self.root.delete_key(key) 40 self.size = self.size-1 41 e l i f self.root.key == key: 42 self.root = None 43 self.size = self.size e l s e : 45 p r i n t error, bad key

10 Constructor for a TreeNode 1 d e f init (self,key,val,parent=none, 2 left=none,right=none): 3 self.key = key 4 self.payload = val 5 self.leftchild = left 6 self.rightchild = right 7 self.parent = parent

11 Inserting a new node Starting at the root of the tree, search the binary tree comparing the new key to the key in the current node. If the new key is less than the current node, search the left subtree. If the new key is greater than the current node, search the right subtree. When there is no left (or right) child to search, we have found the position in the tree where the new node should be installed. To add a node to the tree, create a new BinarySearchTree object and insert the object at the point discovered in the previous step.

12 Insert a New Node in a Binary Search Tree 1 d e f put(self,key,val): 2 i f key < self.key: 3 i f self.leftchild: 4 self.leftchild.put(key,val) 5 e l s e : 6 self.leftchild = TreeNode(key,val,self) 7 e l s e : 8 i f self.rightchild: 9 self.rightchild.put(key,val) 10 e l s e : 11 self.rightchild = TreeNode(key,val,self)

13 Overloading setitem 1 def setitem (self,k,v): 2 self.put(k,v)

14 Inserting a Node with Key =

15 Find the Value Stored with a Key 1 def get(self,key): 2 i f key == self.key: 3 return self.payload 4 e l i f key < self.key: 5 i f self.leftchild: 6 return self.leftchild.get(key) 7 e l s e : 8 return None 9 e l i f key > self.key: 10 i f self.rightchild: 11 r e t u r n self.rightchild.get(key) 12 e l s e : 13 return None 14 e l s e : 15 p r i n t error: this line should never be executed def getitem (self,key): 18 return self.get(key)

16 A Simple length Method I 1 2 def length(self): 3 return self.size 4 5 def len (self): 6 return self.size

17 1 The node to be deleted has no children (see Figure 13). 2 The node to be deleted has only one child (see Figure 15). 3 The node to be deleted has two children (see Figure 16).

18 Case 1: Deleting a Node with No Children 1 2 i f not (self.leftchild or self.rightchild): 3 p r i n t "removing a node with no childrend" 4 i f self == self.parent.leftchild: 5 self.parent.leftchild = None 6 e l s e : 7 self.parent.rightchild = None

19 Deleting Node 16, a Node Without Children

20 Case 2: Deleting a Node with One Child 1 e l i f (self.leftchild or self.rightchild) \ 2 and ( not (self.leftchild and self.rightchild)): 3 p r i n t "removing a node with one child" 4 i f self.leftchild: 5 i f self == self.parent.leftchild: 6 self.parent.leftchild = self.leftchild 7 e l s e : 8 self.parent.rightchild = self.leftchild 9 e l s e : 10 i f self == self.parent.leftchild: 11 self.parent.leftchild = self.rightchild 12 e l s e : 13 self.parent.rightchild = self.rightchild

21 Deleting Node 29, a Node That Has a Single Child

22 Deleting Node 5, a Node with Two Children successor

23 Case 3: Delete a Node with Two Children 1 e l s e : 2 succ = self.findsuccessor() 3 succ.spliceout() 4 i f self == self.parent.leftchild: 5 self.parent.leftchild = succ 6 e l s e : 7 self.parent.rightchild = succ 8 succ.leftchild = self.leftchild 9 succ.rightchild = self.rightchild

24 1 If the node has a right child, then the successor is the smallest key in the right subtree. 2 If the node has no right child and is the immediate left child of its parent, then the parent is the successor. 3 If the node is the immediate right child of its parent, and itself has no right child, then the successor to this node is the successor of its parent, excluding this node.

25 Finding the Successor 1 d e f findsuccessor(self): 2 succ = None 3 i f self.rightchild: 4 succ = self.rightchild.findmin() 5 e l s e : 6 i f self.parent.leftchild == self: 7 succ = self.parent 8 e l s e : 9 self.parent.rightchild = None 10 succ = self.parent.findsuccessor() 11 self.parent.rightchild = self 12 return succ

26 Finding the minimum child 1 def findmin(self): 2 n = self 3 while n.leftchild: 4 n = n.leftchild 5 p r i n t found min, key =, n.key 6 return n

27 Helper Method to Splice Out a Node 1 def spliceout(self): 2 i f ( not self.leftchild and not self.rightchild): 3 i f self == self.parent.leftchild: 4 self.parent.leftchild = None 5 e l s e : 6 self.parent.rightchild = None 7 e l i f (self.leftchild or self.rightchild): 8 i f self.leftchild: 9 i f self == self.parent.leftchild: 10 self.parent.leftchild = self.leftchild 11 e l s e : 12 self.parent.rightchild = self.leftchild 13 e l s e : 14 i f self == self.parent.leftchild: 15 self.parent.leftchild = self.rightchild 16 e l s e : 17 self.parent.rightchild = self.rightchild

28 Code for Deleting a Key I 1 d e f delete_key(self,key): 2 i f self.key == key: # do the removal 3 i f not (self.leftchild or self.rightchild): 4 i f self == self.parent.leftchild: 5 self.parent.leftchild = None 6 e l s e : 7 self.parent.rightchild = None 8 e l i f (self.leftchild or self.rightchild) and \ 9 ( not (self.leftchild and self.rightchild)): 10 i f self.leftchild: 11 i f self == self.parent.leftchild: 12 self.parent.leftchild = self.leftchild 13 e l s e : 14 self.parent.rightchild = self.leftchild 15 e l s e : 16 i f self == self.parent.leftchild: 17 self.parent.leftchild = self.rightchild

29 Code for Deleting a Key II 18 e l s e : 19 self.parent.rightchild = self.rightchild 20 e l s e : # replace self with successor 21 succ = self.findsuccessor() 22 succ.spliceout() 23 i f self == self.parent.leftchild: 24 self.parent.leftchild = succ 25 e l s e : 26 self.parent.rightchild = succ 27 succ.leftchild = self.leftchild 28 succ.rightchild = self.rightchild 29 e l s e : # continue looking 30 i f key < self.key: 31 i f self.leftchild: 32 self.leftchild.delete_key(key) 33 e l s e : 34 e l s e :

30 Code for Deleting a Key III 35 i f self.rightchild: 36 self.rightchild.delete_key(key) 37 e l s e : 38 p r i n t "trying to remove a non-existant node"

31 An Iterator for a Binary Search Tree 1 def iter (self): 2 i f self: 3 i f self.leftchild: 4 f o r elem i n self.leftchild: 5 yield elem 6 yield self.key 7 i f self.rightchild: 8 f o r elem i n self.rightchild: 9 yield elem

32 Outline Binary Search Trees 1 Binary Search Trees

33 A Skewed Binary Search Tree

Binary Search Tree. Revised based on textbook author s notes.

Binary Search Tree. Revised based on textbook author s notes. Binary Search Tree Revised based on textbook author s notes. Search Trees The tree structure can be used for searching. Each node contains a search key as part of its data or payload. Nodes are organized

More information

Outline. An Application: A Binary Search Tree. 1 Chapter 7: Trees. favicon. CSI33 Data Structures

Outline. An Application: A Binary Search Tree. 1 Chapter 7: Trees. favicon. CSI33 Data Structures Outline Chapter 7: Trees 1 Chapter 7: Trees Approaching BST Making a decision We discussed the trade-offs between linked and array-based implementations of sequences (back in Section 4.7). Linked lists

More information

Lecture 16: Binary Search Trees

Lecture 16: Binary Search Trees Extended Introduction to Computer Science CS1001.py Lecture 16: Binary Search Trees Instructors: Daniel Deutch, Amir Rubinstein Teaching Assistants: Michal Kleinbort, Amir Gilad School of Computer Science

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College October 24, 2016 Outline Outline 1 Chapter 7: Trees Outline Chapter 7: Trees 1 Chapter 7: Trees The Binary Search Property

More information

Recursion. Presentation Subtitle. Brad Miller David Ranum 1 12/19/2005. Luther College

Recursion. Presentation Subtitle. Brad Miller David Ranum 1 12/19/2005. Luther College Presentation Subtitle Brad Miller David Ranum 1 1 Department of Computer Science Luther College 12/19/2005 Outline Objectives 1 Objectives 2 3 4 List of Lists Representation Nodes and References 5 To understand

More information

Chapter 20: Binary Trees

Chapter 20: Binary Trees Chapter 20: Binary Trees 20.1 Definition and Application of Binary Trees Definition and Application of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two other

More information

2. We ll add new nodes to the AVL as leaves just like we did for Binary Search Trees (BSTs). a) Add the key 90 to the tree?

2. We ll add new nodes to the AVL as leaves just like we did for Binary Search Trees (BSTs). a) Add the key 90 to the tree? eam #: bsent:. n VL ree is a special type of inary Search ree (S) that it is balanced. y balanced I mean that the of every s left and right subtrees differ by at most one. his is enough to guarantee that

More information

Figure 1: A complete binary tree.

Figure 1: A complete binary tree. The Binary Heap A binary heap is a data structure that implements the abstract data type priority queue. That is, a binary heap stores a set of elements with a total order (that means that every two elements

More information

Balanced Binary Search Trees

Balanced Binary Search Trees Balanced Binary Search Trees In the previous section we looked at building a binary search tree. As we learned, the performance of the binary search tree can degrade to O(n) for operations like getand

More information

Tree Travsersals and BST Iterators

Tree Travsersals and BST Iterators Tree Travsersals and BST Iterators PIC 10B May 25, 2016 PIC 10B Tree Travsersals and BST Iterators May 25, 2016 1 / 17 Overview of Lecture 1 Sorting a BST 2 In-Order Travsersal 3 Pre-Order Traversal 4

More information

Data Structures (CS 1520) Lecture 23 Name:

Data Structures (CS 1520) Lecture 23 Name: ata Structures (S 152) Lecture 23 Name: 1. n VL ree is a special type of inary Search ree (S) that it is balanced. y balanced I mean that the of every s left and right subtrees differ by at most one. his

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College October 19, 2016 Outline Outline 1 Chapter 7: Trees Outline Chapter 7: Trees 1 Chapter 7: Trees Uses Of Trees Chapter 7: Trees

More information

PyTrie Documentation. Release 0.3. George Sakkis

PyTrie Documentation. Release 0.3. George Sakkis PyTrie Documentation Release 0.3 George Sakkis Jun 05, 2017 Contents 1 Usage 3 2 Reference documentation 5 2.1 Classes.................................................. 5 2.2 Trie methods...............................................

More information

In addition to the correct answer, you MUST show all your work in order to receive full credit.

In addition to the correct answer, you MUST show all your work in order to receive full credit. In addition to the correct answer, you MUST show all your work in order to receive full credit. Questions Mark: Question1) Multiple Choice Questions /10 Question 2) Binary Trees /15 Question 3) Linked

More information

(2,4) Trees. 2/22/2006 (2,4) Trees 1

(2,4) Trees. 2/22/2006 (2,4) Trees 1 (2,4) Trees 9 2 5 7 10 14 2/22/2006 (2,4) Trees 1 Outline and Reading Multi-way search tree ( 10.4.1) Definition Search (2,4) tree ( 10.4.2) Definition Search Insertion Deletion Comparison of dictionary

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College September 25, 2017 Outline Outline 1 Chapter 4: Linked Structures and Chapter 4: Linked Structures and Outline 1 Chapter 4:

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College November 13, 2017 Outline Outline 1 C++ Supplement.1: Trees Outline C++ Supplement.1: Trees 1 C++ Supplement.1: Trees Uses

More information

Trees. Tree Structure Binary Tree Tree Traversals

Trees. Tree Structure Binary Tree Tree Traversals Trees Tree Structure Binary Tree Tree Traversals The Tree Structure Consists of nodes and edges that organize data in a hierarchical fashion. nodes store the data elements. edges connect the nodes. The

More information

Binary Tree Applications

Binary Tree Applications Binary Tree Applications Lecture 30 Section 19.2 Robb T. Koether Hampden-Sydney College Wed, Apr 15, 2015 Robb T. Koether (Hampden-Sydney College) Binary Tree Applications Wed, Apr 15, 2015 1 / 56 1 Binary

More information

Lecture 23: Binary Search Trees

Lecture 23: Binary Search Trees Lecture 23: Binary Search Trees CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki 1 BST A binary tree is a binary search tree iff it is empty or if the value of every node is both greater than or equal

More information

Extended Introduction to Computer Science CS1001.py

Extended Introduction to Computer Science CS1001.py Extended Introduction to Computer Science CS1001.py Lecture 15: Data Structures; Linked Lists Binary trees Instructors: Benny Chor, Amir Rubinstein Teaching Assistants: Michal Kleinbort, Yael Baran School

More information

n 1 i = n + i = n + f(n 1)

n 1 i = n + i = n + f(n 1) 2 Binary Search Trees Lab Objective: A tree is a linked list where each node in the list may refer to more than one other node. This structural flexibility makes trees more useful and efficient than regular

More information

a graph is a data structure made up of nodes in graph theory the links are normally called edges

a graph is a data structure made up of nodes in graph theory the links are normally called edges 1 Trees Graphs a graph is a data structure made up of nodes each node stores data each node has links to zero or more nodes in graph theory the links are normally called edges graphs occur frequently in

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 11: Binary Search Trees MOUNA KACEM mouna@cs.wisc.edu Fall 2018 General Overview of Data Structures 2 Introduction to trees 3 Tree: Important non-linear data structure

More information

- 1 - Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions. CS106B Spring 2013

- 1 - Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions. CS106B Spring 2013 CS106B Spring 2013 Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions Based on handouts by Eric Roberts and Jerry Cain Problem One: Reversing a Queue One way to reverse the queue is to keep

More information

CS 350 : Data Structures Binary Search Trees

CS 350 : Data Structures Binary Search Trees CS 350 : Data Structures Binary Search Trees David Babcock (courtesy of James Moscola) Department of Physical Sciences York College of Pennsylvania James Moscola Introduction to Binary Search Trees A binary

More information

Motivation Computer Information Systems Storage Retrieval Updates. Binary Search Trees. OrderedStructures. Binary Search Tree

Motivation Computer Information Systems Storage Retrieval Updates. Binary Search Trees. OrderedStructures. Binary Search Tree Binary Search Trees CMPUT 115 - Lecture Department of Computing Science University of Alberta Revised 21-Mar-05 In this lecture we study an important data structure: Binary Search Tree (BST) Motivation

More information

CSC148H Week 8. Sadia Sharmin. July 12, /29

CSC148H Week 8. Sadia Sharmin. July 12, /29 CSC148H Week 8 Sadia Sharmin July 12, 2017 1/29 Motivating Trees I A data structure is a way of organizing data I Stacks, queues, and lists are all linear structures I They are linear in the sense that

More information

Outline. LList: A Linked Implementation of a List ADT Iterators Links vs. Arrays In-class work. 1 Chapter 4: Linked Structures and Iterators

Outline. LList: A Linked Implementation of a List ADT Iterators Links vs. Arrays In-class work. 1 Chapter 4: Linked Structures and Iterators Chapter 4: Linked Structures and Outline 1 Chapter 4: Linked Structures and Chapter 4: Linked Structures and Using the ListNode Class Ideas about Linked List Implementation We have a pretty good feeling

More information

A Binary Search Tree Implementation

A Binary Search Tree Implementation A Binary Search Tree Implementation Chapter 25 Getting Started Contents An Interface for the Binary Search Tree Duplicate Entries Beginning the Class Definition Searching and Retrieving Traversing Adding

More information

CS 231 Data Structures and Algorithms Fall Binary Search Trees Lecture 23 October 29, Prof. Zadia Codabux

CS 231 Data Structures and Algorithms Fall Binary Search Trees Lecture 23 October 29, Prof. Zadia Codabux CS 231 Data Structures and Algorithms Fall 2018 Binary Search Trees Lecture 23 October 29, 2018 Prof. Zadia Codabux 1 Agenda Ternary Operator Binary Search Tree Node based implementation Complexity 2 Administrative

More information

Data Structures in Java

Data Structures in Java Data Structures in Java Lecture 9: Binary Search Trees. 10/7/015 Daniel Bauer 1 Contents 1. Binary Search Trees. Implementing Maps with BSTs Map ADT A map is collection of (key, value) pairs. Keys are

More information

If you took your exam home last time, I will still regrade it if you want.

If you took your exam home last time, I will still regrade it if you want. Some Comments about HW2: 1. You should have used a generic node in your structure one that expected an Object, and not some other type. 2. Main is still too long for some people 3. braces in wrong place,

More information

CSC148-Section:L0301

CSC148-Section:L0301 Slides adapted from Professor Danny Heap course material winter17 CSC148-Section:L0301 Week#9-Firday Instructed by AbdulAziz Al-Helali a.alhelali@mail.utoronto.ca Office hours: Wednesday 11-1, BA2230.

More information

pygtrie Release Jul 03, 2017

pygtrie Release Jul 03, 2017 pygtrie Release Jul 03, 2017 Contents 1 Features 3 2 Installation 5 3 Upgrading from 0.9.x 7 4 Trie classes 9 5 PrefixSet class 19 6 Version History 21 Python Module Index 23 i ii Implementation of a

More information

Data Structures and Algorithms

Data Structures and Algorithms Data Structures and Algorithms CS245-2008S-19 B-Trees David Galles Department of Computer Science University of San Francisco 19-0: Indexing Operations: Add an element Remove an element Find an element,

More information

Objectives Getting Started What Is Computer Science? Review of Basic Python Summary. Introduction 1/25/06. Introduction

Objectives Getting Started What Is Computer Science? Review of Basic Python Summary. Introduction 1/25/06. Introduction Brad Miller David Ranum 1/25/06 Outline Objectives 1 Objectives 2 3 What Is Programming? Why Study Data Structures and Abstract Data Types? Why Study Algorithms? 4 with Data Object-Oriented Programming

More information

CS350: Data Structures Binary Search Trees

CS350: Data Structures Binary Search Trees Binary Search Trees James Moscola Department of Engineering & Computer Science York College of Pennsylvania James Moscola Introduction to Binary Search Trees A binary search tree is a binary tree that

More information

Do not turn this page until you have received the signal to start. In the meantime, please read the instructions below carefully.

Do not turn this page until you have received the signal to start. In the meantime, please read the instructions below carefully. CSC A48 Winter 2014 CSCA48 Final Exam 23 April 2014 Duration: Aids Allowed: 150 minutes None Student Number: UTORid: Last (Family) Name(s): First (Given) Name(s): Do not turn this page until you have received

More information

Computer Science 210 Data Structures Siena College Fall Topic Notes: Trees

Computer Science 210 Data Structures Siena College Fall Topic Notes: Trees Computer Science 0 Data Structures Siena College Fall 08 Topic Notes: Trees We ve spent a lot of time looking at a variety of structures where there is a natural linear ordering of the elements in arrays,

More information

Principles of Computer Science

Principles of Computer Science Principles of Computer Science Binary Trees 08/11/2013 CSCI 2010 - Binary Trees - F.Z. Qureshi 1 Today s Topics Extending LinkedList with Fast Search Sorted Binary Trees Tree Concepts Traversals of a Binary

More information

Binary Tree Application Expression Tree. Revised based on textbook author s notes.

Binary Tree Application Expression Tree. Revised based on textbook author s notes. Binary Tree Application Expression Tree Revised based on textbook author s notes. Expression Trees A binary tree in which the operators are stored in the interior nodes and the operands are sored in the

More information

CS302 - Data Structures using C++

CS302 - Data Structures using C++ CS302 - Data Structures using C++ Topic: Implementation Kostas Alexis s Definition: A (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction

More information

CSCI Trees. Mark Redekopp David Kempe

CSCI Trees. Mark Redekopp David Kempe CSCI 104 2-3 Trees Mark Redekopp David Kempe Trees & Maps/Sets C++ STL "maps" and "sets" use binary search trees internally to store their keys (and values) that can grow or contract as needed This allows

More information

Binary Search Tree (3A) Young Won Lim 6/2/18

Binary Search Tree (3A) Young Won Lim 6/2/18 Binary Search Tree (A) /2/1 Copyright (c) 2015-201 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Module 8: Binary trees

Module 8: Binary trees Module 8: Binary trees Readings: HtDP, Section 14 We will cover the ideas in the text using different examples and different terminology. The readings are still important as an additional source of examples.

More information

Heapsort. Heap data structure

Heapsort. Heap data structure Heapsort Heap data structure. Heap A (not garbage-collected storage) is a nearly complete binary tree.. Height of node = # of edges on a longest simple path from the node down to a leaf.. Height of heap

More information

CSC148-Section:L0301

CSC148-Section:L0301 Slides adapted from Professor Danny Heap course material winter17 CSC148-Section:L0301 Week#8-Friday Instructed by AbdulAziz Al-Helali a.alhelali@mail.utoronto.ca Office hours: Wednesday 11-1, BA2230.

More information

Chapter 11.!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1

Chapter 11.!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1 Chapter 11!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1 2015-12-01 09:30:53 1/54 Chapter-11.pdf (#13) Terminology Definition of a general tree! A general tree T is a set of one or

More information

Chapter 11.!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1

Chapter 11.!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1 Chapter 11!!!!Trees! 2011 Pearson Addison-Wesley. All rights reserved 11 A-1 2015-03-25 21:47:41 1/53 Chapter-11.pdf (#4) Terminology Definition of a general tree! A general tree T is a set of one or more

More information

DATA STRUCTURES AND ALGORITHMS

DATA STRUCTURES AND ALGORITHMS LECTURE 3 Babeş - Bolyai University Computer Science and Mathematics Faculty 2017-2018 In Lecture 2... Algorithm Analysis Dynamic Array Iterator Today 1 2 3 Singly Iterator An iterator is a structure that

More information

Final Exam Solutions PIC 10B, Spring 2016

Final Exam Solutions PIC 10B, Spring 2016 Final Exam Solutions PIC 10B, Spring 2016 Problem 1. (10 pts) Consider the Fraction class, whose partial declaration was given by 1 class Fraction { 2 public : 3 Fraction ( int num, int den ); 4... 5 int

More information

CS 758/858: Algorithms

CS 758/858: Algorithms CS 758/858: Algorithms http://www.cs.unh.edu/~ruml/cs758 1 handout: slides Wheeler Ruml (UNH) Class 7, CS 758 1 / 16 BST Deletion Single Child Immed. Succ. Deep Succ. Break Wheeler Ruml (UNH) Class 7,

More information

CS350: Data Structures Heaps and Priority Queues

CS350: Data Structures Heaps and Priority Queues Heaps and Priority Queues James Moscola Department of Engineering & Computer Science York College of Pennsylvania James Moscola Priority Queue An abstract data type of a queue that associates a priority

More information

CS350: Data Structures Red-Black Trees

CS350: Data Structures Red-Black Trees Red-Black Trees James Moscola Department of Engineering & Computer Science York College of Pennsylvania James Moscola Red-Black Tree An alternative to AVL trees Insertion can be done in a bottom-up or

More information

TREES Lecture 12 CS2110 Spring 2018

TREES Lecture 12 CS2110 Spring 2018 TREES Lecture 12 CS2110 Spring 2018 Important Announcements 2 A4 is out now and due two weeks from today. Have fun, and start early! Data Structures 3 There are different ways of storing data, called data

More information

Computer Science 210 Data Structures Siena College Fall Topic Notes: Binary Search Trees

Computer Science 210 Data Structures Siena College Fall Topic Notes: Binary Search Trees Computer Science 10 Data Structures Siena College Fall 018 Topic Notes: Binary Search Trees Possibly the most common usage of a binary tree is to store data for quick retrieval. Definition: A binary tree

More information

Priority Queues and Binary Heaps

Priority Queues and Binary Heaps Yufei Tao ITEE University of Queensland In this lecture, we will learn our first tree data structure called the binary heap which serves as an implementation of the priority queue. Priority Queue A priority

More information

Binary Trees. Recursive definition. Is this a binary tree?

Binary Trees. Recursive definition. Is this a binary tree? Binary Search Trees Binary Trees Recursive definition 1. An empty tree is a binary tree 2. A node with two child subtrees is a binary tree 3. Only what you get from 1 by a finite number of applications

More information

CSE : Python Programming. Decorators. Announcements. The decorator pattern. The decorator pattern. The decorator pattern

CSE : Python Programming. Decorators. Announcements. The decorator pattern. The decorator pattern. The decorator pattern CSE 399-004: Python Programming Lecture 12: Decorators April 9, 200 http://www.seas.upenn.edu/~cse39904/ Announcements Projects (code and documentation) are due: April 20, 200 at pm There will be informal

More information

Exam Data structures DIT960/DAT036

Exam Data structures DIT960/DAT036 Exam Data structures DIT960/DAT036 Time Monday 26th May 2014, 14:00 18:00 Place Hörsalsvägen Course responsible Nick Smallbone, tel. 0707 183062 The exam consists of six questions. Some of the questions

More information

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs CS 6A Summer 5 Structure and Interpretation of Computer Programs Midterm Solutions INSTRUCTIONS You have hours to complete the exam. The exam is closed book, closed notes, closed computer, closed calculator,

More information

Module 9: Binary trees

Module 9: Binary trees Module 9: Binary trees Readings: HtDP, Section 14 We will cover the ideas in the text using different examples and different terminology. The readings are still important as an additional source of examples.

More information

# from math import floor,log

# from math import floor,log Homework 11-20 What follows is all the python code that you ll need for the homework assignment. # -------------------------------------------------------------------- from math import floor,log # Trees

More information

lecture14: Tree Traversals

lecture14: Tree Traversals lecture14: Tree Largely based on slides by Cinda Heeren CS 225 UIUC 2nd July, 2013 Announcements lab trees due Saturday night (7/6) Reminder: no class 7/4 mp4.1 extra credit due Friday night (7/5) Source:

More information

Unit 9 Practice Test (AB27-30)

Unit 9 Practice Test (AB27-30) Unit 9 Practice Test (AB27-30) Name 1. Consider the following method: public static int checktree(treenode root) return 0; int x = checktree(root.getleft()); if ( x >= 0 && checktree(root.getright()) ==

More information

2-3 Tree. Outline B-TREE. catch(...){ printf( "Assignment::SolveProblem() AAAA!"); } ADD SLIDES ON DISJOINT SETS

2-3 Tree. Outline B-TREE. catch(...){ printf( Assignment::SolveProblem() AAAA!); } ADD SLIDES ON DISJOINT SETS Outline catch(...){ printf( "Assignment::SolveProblem() AAAA!"); } Balanced Search Trees 2-3 Trees 2-3-4 Trees Slide 4 Why care about advanced implementations? Same entries, different insertion sequence:

More information

Binary Search Tree (2A) Young Won Lim 5/17/18

Binary Search Tree (2A) Young Won Lim 5/17/18 Binary Search Tree (2A) Copyright (c) 2015-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Data Structures CSCI C343, Fall 2014

Data Structures CSCI C343, Fall 2014 Data Structures CSCI C343, This exam has 10 questions, for a total of 100 points. 1. 8 points For each of the nodes 35, 52, 63, and, list the successor and predecessors of the node (if they exist). 52

More information

Data Structures and Algorithms

Data Structures and Algorithms Data Structures and Algorithms Spring 2017-2018 Outline 1 Priority Queues Outline Priority Queues 1 Priority Queues Jumping the Queue Priority Queues In normal queue, the mode of selection is first in,

More information

Heaps. Heaps Priority Queue Revisit HeapSort

Heaps. Heaps Priority Queue Revisit HeapSort Heaps Heaps Priority Queue Revisit HeapSort Heaps A heap is a complete binary tree in which the nodes are organized based on their data values. For each non- leaf node V, max- heap: the value in V is greater

More information

Final Exam. Name: Student ID: Section: Signature:

Final Exam. Name: Student ID: Section: Signature: Final Exam PIC 10B, Spring 2016 Name: Student ID: Section: Discussion 3A (2:00 2:50 with Kelly) Discussion 3B (3:00 3:50 with Andre) I attest that the work presented in this exam is my own. I have not

More information

CSI33 Data Structures

CSI33 Data Structures Department of Mathematics and Computer Science Bronx Community College Section 13.3: Outline 1 Section 13.3: Section 13.3: Improving The Worst-Case Performance for BSTs The Worst Case Scenario In the worst

More information

Algorithms in Systems Engineering ISE 172. Lecture 16. Dr. Ted Ralphs

Algorithms in Systems Engineering ISE 172. Lecture 16. Dr. Ted Ralphs Algorithms in Systems Engineering ISE 172 Lecture 16 Dr. Ted Ralphs ISE 172 Lecture 16 1 References for Today s Lecture Required reading Sections 6.5-6.7 References CLRS Chapter 22 R. Sedgewick, Algorithms

More information

3137 Data Structures and Algorithms in C++

3137 Data Structures and Algorithms in C++ 3137 Data Structures and Algorithms in C++ Lecture 3 July 12 2006 Shlomo Hershkop 1 Announcements Homework 2 out tonight Please make sure you complete hw1 asap if you have issues, please contact me will

More information

Trees. (Trees) Data Structures and Programming Spring / 28

Trees. (Trees) Data Structures and Programming Spring / 28 Trees (Trees) Data Structures and Programming Spring 2018 1 / 28 Trees A tree is a collection of nodes, which can be empty (recursive definition) If not empty, a tree consists of a distinguished node r

More information

Data Structures (CS 1520) Lecture 23 Name:

Data Structures (CS 1520) Lecture 23 Name: Data Structures (CS ) Lecture Name: ListDict object _table Python list object.... Consider the following ListDict class implementation. class Entry(object): """A key/value pair.""" def init (self, key,

More information

CISC 235 Topic 3. General Trees, Binary Trees, Binary Search Trees

CISC 235 Topic 3. General Trees, Binary Trees, Binary Search Trees CISC 235 Topic 3 General Trees, Binary Trees, Binary Search Trees Outline General Trees Terminology, Representation, Properties Binary Trees Representations, Properties, Traversals Recursive Algorithms

More information

Associate Professor Dr. Raed Ibraheem Hamed

Associate Professor Dr. Raed Ibraheem Hamed Associate Professor Dr. Raed Ibraheem Hamed University of Human Development, College of Science and Technology Computer Science Department 2015 2016 Department of Computer Science _ UHD 1 What this Lecture

More information

Structure and Interpretation of Computer Programs Summer 2015 Midterm 2

Structure and Interpretation of Computer Programs Summer 2015 Midterm 2 CS 6A Structure and Interpretation of Computer Programs Summer 05 Midterm INSTRUCTIONS You have hours to complete the exam. The exam is closed book, closed notes, closed computer, closed calculator, except

More information

PIC 16: Midterm. Part 1. In this part, you should not worry about why your class has the name that it does.

PIC 16: Midterm. Part 1. In this part, you should not worry about why your class has the name that it does. PIC 16: Midterm Assigned 10/19/2018 at noon. Code (a single.py file) due by 12:51pm on CCLE. I have provided you with a.py file which contains test code. I have also provided you with a.txt file of what

More information

Sorted Arrays. Operation Access Search Selection Predecessor Successor Output (print) Insert Delete Extract-Min

Sorted Arrays. Operation Access Search Selection Predecessor Successor Output (print) Insert Delete Extract-Min Binary Search Trees FRIDAY ALGORITHMS Sorted Arrays Operation Access Search Selection Predecessor Successor Output (print) Insert Delete Extract-Min 6 10 11 17 2 0 6 Running Time O(1) O(lg n) O(1) O(1)

More information

Data Structure - Binary Tree 1 -

Data Structure - Binary Tree 1 - Data Structure - Binary Tree 1 - Hanyang University Jong-Il Park Basic Tree Concepts Logical structures Chap. 2~4 Chap. 5 Chap. 6 Linear list Tree Graph Linear structures Non-linear structures Linear Lists

More information

DATA STRUCTURES AND ALGORITHMS

DATA STRUCTURES AND ALGORITHMS LECTURE 3 Babeş - Bolyai University Computer Science and Mathematics Faculty 2017-2018 In Lecture 2... Algorithm Analysis Dynamic Array Iterator Today 1 2 Iterator An iterator is a structure that is used

More information

Balanced Search Trees

Balanced Search Trees Balanced Search Trees Computer Science E-22 Harvard Extension School David G. Sullivan, Ph.D. Review: Balanced Trees A tree is balanced if, for each node, the node s subtrees have the same height or have

More information

Binary Search Tree (3A) Young Won Lim 6/6/18

Binary Search Tree (3A) Young Won Lim 6/6/18 Binary Search Tree (A) //1 Copyright (c) 2015-201 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

CMSC 341. Binary Search Trees CMSC 341 BST

CMSC 341. Binary Search Trees CMSC 341 BST CMSC 341 Binary Search Trees CMSC 341 BST Announcements Homework #3 dues Thursday (10/5/2017) Exam #1 next Thursday (10/12/2017) CMSC 341 BST A Generic Tree CMSC 341 BST Binary Tree CMSC 341 BST The Binary

More information

Successor/Predecessor Rules in Binary Trees

Successor/Predecessor Rules in Binary Trees Successor/Predecessor Rules in inary Trees Thomas. nastasio July 7, 2003 Introduction inary tree traversals are commonly made in one of three patterns, inorder, preorder, and postorder. These traversals

More information

Data Structures (CS 1520) Lecture 19 Name:

Data Structures (CS 1520) Lecture 19 Name: . n VL ree is a special type of inary Search ree (S) that it is balanced. y balanced I mean that the of every s left and right subtrees differ by at most one. his is enough to guarantee that a VL tree

More information

Binary Tree Implementation

Binary Tree Implementation Binary Tree Implementation Lecture 31 Sections 12.2-12.3 Robb T. Koether Hampden-Sydney College Mon, Apr 5, 2010 Robb T. Koether (Hampden-Sydney College) Binary Tree Implementation Mon, Apr 5, 2010 1 /

More information

Lecture Notes on Binary Search Trees

Lecture Notes on Binary Search Trees Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 16 March 17, 2015 1 Introduction In this lecture, we will continue considering ways

More information

Tree Terminology. root. Edge. interior node. parent. path. subtree. child. leaf

Tree Terminology. root. Edge. interior node. parent. path. subtree. child. leaf Tree Terminology Binary Trees CS00: Trees interior node Node path root parent Edge subtree Degree? Depth/Level? A binary tree is a set T of nodes such that either T is empty, or T is partitioned into three

More information

CS302 - Data Structures using C++

CS302 - Data Structures using C++ CS302 - Data Structures using C++ Topic: Trees Kostas Alexis Trees List, stacks, and queues are linear in their organization of data. Items are one after another In this section, we organize data in a

More information

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key and satisfies the conditions:

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key and satisfies the conditions: 1 The general binary tree shown is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will) and the general binary tree does not have

More information

CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS:

CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS: CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS: OVERVIEW: motivation naive tree search sorting for trees and binary trees new tree classes search insert delete 1. Motivation 1.1 Search Structure continuing

More information

Chapter 8. Binary Search Trees. Fall 2013 Yanjun Li CISC Trees. Owner Jake. Waitress Waiter Cook Helper Joyce Chris Max Len

Chapter 8. Binary Search Trees. Fall 2013 Yanjun Li CISC Trees. Owner Jake. Waitress Waiter Cook Helper Joyce Chris Max Len Chapter 8 Binary Search Trees Fall 2013 Yanjun Li CISC 2200 1 Trees Owner Jake Manager Brad Chef Carol Waitress Waiter Cook Helper Joyce Chris Max Len Jake s Pizza Shop Fall 2013 Yanjun Li CISC 2200 2

More information

Maps; Binary Search Trees

Maps; Binary Search Trees Maps; Binary Search Trees PIC 10B Friday, May 20, 2016 PIC 10B Maps; Binary Search Trees Friday, May 20, 2016 1 / 24 Overview of Lecture 1 Maps 2 Binary Search Trees 3 Questions PIC 10B Maps; Binary Search

More information

Binary Search Tree (3A) Young Won Lim 6/4/18

Binary Search Tree (3A) Young Won Lim 6/4/18 Binary Search Tree (A) /4/1 Copyright (c) 2015-201 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Binary search trees. Support many dynamic-set operations, e.g. Search. Minimum. Maximum. Insert. Delete ...

Binary search trees. Support many dynamic-set operations, e.g. Search. Minimum. Maximum. Insert. Delete ... Binary search trees Support many dynamic-set operations, e.g. Search Minimum Maximum Insert Delete... Can be used as dictionary, priority queue... you name it Running time depends on height of tree: 1

More information

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs CS 61A Summer 015 Structure and Interpretation of Computer Programs Final Solutions INSTRUCTIONS You have 3 hours to complete the exam. The exam is closed book, closed notes, closed computer, closed calculator,

More information