TREES Lecture 12 CS2110 Fall 2016

Similar documents
TREES. Tree Overview 9/28/16. Prelim 1 tonight! Important Announcements. Tree terminology. Binary trees were in A1!

TREES Lecture 10 CS2110 Spring2014

TREES Lecture 12 CS2110 Spring 2018

References and Homework ABSTRACT DATA TYPES; LISTS & TREES. Abstract Data Type (ADT) 9/24/14. ADT example: Set (bunch of different values)

TREES 11/1/18. Prelim Updates. Data Structures. Example Data Structures. Tree Overview. Tree. Singly linked list: Today: trees!

Binary Trees

Programming II (CS300)

Lecture 12 TREES II CS2110 Spring 2018

TREES Lecture 12 CS2110 Spring 2019

TREES. Trees - Introduction

CS24 Week 8 Lecture 1

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

CMPT 225. Binary Search Trees

COSC 2007 Data Structures II Final Exam. Part 1: multiple choice (1 mark each, total 30 marks, circle the correct answer)

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

Chapter 20: Binary Trees

Computational Optimization ISE 407. Lecture 16. Dr. Ted Ralphs

Uses for Trees About Trees Binary Trees. Trees. Seth Long. January 31, 2010

Data Structure - Binary Tree 1 -

Binary Tree. Preview. Binary Tree. Binary Tree. Binary Search Tree 10/2/2017. Binary Tree

CS61B Lecture #20. Today: Trees. Readings for Today: Data Structures, Chapter 5. Readings for Next Topic: Data Structures, Chapter 6

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

Why Do We Need Trees?

Binary Trees, Binary Search Trees

CSE 230 Intermediate Programming in C and C++ Binary Tree

Trees. Q: Why study trees? A: Many advance ADTs are implemented using tree-based data structures.

Trees : Part 1. Section 4.1. Theory and Terminology. A Tree? A Tree? Theory and Terminology. Theory and Terminology

CSC148 Week 6. Larry Zhang

CSCI-401 Examlet #5. Name: Class: Date: True/False Indicate whether the sentence or statement is true or false.

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

CmpSci 187: Programming with Data Structures Spring 2015

CSI33 Data Structures

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

Algorithms. Deleting from Red-Black Trees B-Trees

Largest Online Community of VU Students

CS61B Lecture #20: Trees. Last modified: Mon Oct 8 21:21: CS61B: Lecture #20 1

CS61B Lecture #21. A Recursive Structure. Fundamental Operation: Traversal. Preorder Traversal and Prefix Expressions. (- (- (* x (+ y 3))) z)

Binary Trees. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I

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

Trees Chapter 19, 20. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Trees. Truong Tuan Anh CSE-HCMUT

Principles of Computer Science

Garbage Collection: recycling unused memory

Lecture 23: Binary Search Trees

! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge

Trees. Dr. Ronaldo Menezes Hugo Serrano Ronaldo Menezes, Florida Tech

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

Abstract Data Structures IB Computer Science. Content developed by Dartford Grammar School Computer Science Department

COMP Analysis of Algorithms & Data Structures

CMSC 341. Binary Search Trees CMSC 341 BST

A set of nodes (or vertices) with a single starting point

CS102 Binary Search Trees

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

Also, recursive methods are usually declared private, and require a public non-recursive method to initiate them.

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

Trees. Introduction & Terminology. February 05, 2018 Cinda Heeren / Geoffrey Tien 1

CS302 - Data Structures using C++

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

CS 231 Data Structures and Algorithms Fall Recursion and Binary Trees Lecture 21 October 24, Prof. Zadia Codabux

Total Score /1 /20 /41 /15 /23 Grader

Outline. Computer Science 331. Insertion: An Example. A Recursive Insertion Algorithm. Binary Search Trees Insertion and Deletion.

COMP Analysis of Algorithms & Data Structures

Binary Search Trees. See Section 11.1 of the text.

Data Structure Lecture#10: Binary Trees (Chapter 5) U Kang Seoul National University

Tree: non-recursive definition. Trees, Binary Search Trees, and Heaps. Tree: recursive definition. Tree: example.

Trees, Part 1: Unbalanced Trees

INF2220: algorithms and data structures Series 1

Binary Trees. Examples:

CS350: Data Structures Tree Traversal

Data Structures Brett Bernstein

Trees 11/15/16. Chapter 11. Terminology. Terminology. Terminology. Terminology. Terminology

Data Structure. IBPS SO (IT- Officer) Exam 2017

Trees and Tree Traversals. Binary Trees. COMP 210: Object-Oriented Programming Lecture Notes 8. Based on notes by Logan Mayfield

! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge

BBM 201 Data structures

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

ITI Introduction to Computing II

Data Structures and Algorithms

CS61BL. Lecture 3: Asymptotic Analysis Trees & Tree Traversals Stacks and Queues Binary Search Trees (and other trees)

CS 206 Introduction to Computer Science II

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012

Trees. CSE 373 Data Structures

Binary Search Trees Treesort

COMP : Trees. COMP20012 Trees 219

CS 206 Introduction to Computer Science II

CSE 214 Computer Science II Introduction to Tree

Binary Trees. Height 1

ITI Introduction to Computing II

MIDTERM EXAMINATION Spring 2010 CS301- Data Structures

Recursive Data Structures and Grammars

9/29/2016. Chapter 4 Trees. Introduction. Terminology. Terminology. Terminology. Terminology

CMPSCI 187: Programming With Data Structures. Lecture #26: Binary Search Trees David Mix Barrington 9 November 2012

Course Review for. Cpt S 223 Fall Cpt S 223. School of EECS, WSU

CS 206 Introduction to Computer Science II

7.1 Introduction. A (free) tree T is A simple graph such that for every pair of vertices v and w there is a unique path from v to w

Lecture 6: Analysis of Algorithms (CS )

Topic 14. The BinaryTree ADT

Data Structures. Giri Narasimhan Office: ECS 254A Phone: x-3748

Data Structures and Algorithms

Transcription:

TREES Lecture 12 CS2110 Fall 2016

Prelim 1 tonight! 2 5:30 prelim is very crowded. You HAVE to follow these directions: 1. Students taking the normal 5:30 prelim (not the quiet room) and whose last names begin with A through Da MUST go to Phillips 101. 2. All other 5:30 students, go to Olin 155. You will stay there or be directed to another Olin room. 3. All 7:30 students go to Olin 155; you will staythere or be directed to another Olin room. 4. EVERYONE: Bring your Cornell id card. You will need it to get into the exam room.

Important Announcements 3 A4 will be posted this weekend Mid-semester TA evaluations are coming up; please participate! Your feedback will help our staff improve their teaching ---this semester.

Tree Overview 4 Tree: data structure with nodes, similar to linked list Each node may have zero or more successors (children) Each node has exactly one predecessor (parent) except the root, which has none All nodes are reachable from root Binary tree: tree in which each node can have at most two children: a left child and a right child 5 4 2 7 8 9 General tree 5 4 7 8 Not a tree 5 4 2 7 8 Binary tree 5 6 8 List-like tree

Binary trees were in A1! 5 You have seen a binary tree in A1. A PhD object phd has one or two advisors. Here is an intellectual ancestral tree! phd ad1 ad2 ad1 ad2 ad1

Tree terminology 6 M: root of this tree G: root of the left subtree of M B, H, J, N, S: leaves (their set of children is empty) N: left child of P; S: right child of P P: parent of N M and G: ancestors of D P, N, S: descendants of W J is at depth 2 (i.e. length of path from root = no. of edges) W is at height 2 (i.e. length of longest path to a leaf) A collection of several trees is called a...? B D G H J M P N W S

7 Class for binary tree node class TreeNode<T> { private T datum; private TreeNode<T> left, right; } Points to left subtree (null if empty) Points to right subtree (null if empty) /** Constructor: one-node tree with datum x */ public TreeNode (T d) { datum= d; left= null; right= null;} /** Constr: Tree with root value x, left tree l, right tree r */ public TreeNode (T d, TreeNode<T> l, TreeNode<T> r) { datum= d; left= l; right= r; } more methods: getvalue, setvalue, getleft, setleft, etc.

Binary versus general tree 8 In a binary tree, each node has up to two pointers: to the left subtree and to the right subtree: One or both could be null, meaning the subtree is empty (remember, a tree is a set of nodes) In a general tree, a node can have any number of child nodes (and they need not be ordered) Very useful in some situations...... one of which may be in an assignment!

Class for general tree nodes 9 class GTreeNode<T> { private T datum; private List<GTreeNode<T>> children; //appropriate constructors, getters, //setters, etc. } Parent contains a list of its children 5 4 2 7 8 9 General tree 7 8 3 1

Class for general tree nodes 10 class GTreeNode<T> { private T datum; private List<GTreeNode<T>> children; //appropriate constructors, getters, //setters, etc. } Java.util.List is an interface! It defines the methods that all implementation must implement. Whoever writes this class gets to decide what implementation to use ArrayList? LinkedList? Etc.? 4 5 7 8 9 2 7 8 3 1 General tree

Applications of Tree: Syntax Trees 11 Most languages (natural and computer) have a recursive, hierarchical structure This structure is implicit in ordinary textual representation Recursive structure can be made explicit by representing sentences in the language as trees: Abstract Syntax Trees (ASTs) ASTs are easier to optimize, generate code from, etc. than textual representation A parser converts textual representations to AST

Applications of Tree: Syntax Trees 12 In textual representation: Parentheses show hierarchical structure Text -34-34 Tree Representation In tree representation: Hierarchy is explicit in the structure of the tree - (2 + 3) - + 2 3 We ll talk more about expressions and trees in next lecture ((2+3) + (5+7)) + + + 2 3 5 7

Recursion on trees 13 Trees are defined recursively: A binary tree is either (1) empty or (2) a value (called the root value), a left binary tree, and a right binary tree

Recursion on trees 14 Trees are defined recursively, so recursive methods can be written to process trees in an obvious way. Base case empty tree (null) leaf Recursive case solve problem on each subtree put solutions together to get solution for full tree

Class for binary tree nodes 15 Class BinTreeNode<T> { private T datum; private BinTreeNode<T> left; private BinTreeNode<T> right; //appropriate constructors, getters, //setters, etc. } 5 4 2 7 9 Binary tree 7 1

Searching in a Binary Tree 16 /** Return true iff x is the datum in a node of tree t*/ public static boolean treesearch(t x, TreeNode<T> t) { if (t == null) return false; if (x.equals(t.datum)) return true; return treesearch(x, t.left) treesearch(x, t.right); } Analog of linear search in lists: given tree and an object, find out if object is stored in tree Easy to write recursively, harder to write iteratively 2 9 0 8 3 5 7

Searching in a Binary Tree 17 /** Return true iff x is the datum in a node of tree t*/ public static boolean treesearch(t x, TreeNode<T> t) { if (t == null) return false; if (x.equals(t.datum)) return true; return treesearch(x, t.left) treesearch(x, t.right); } VERY IMPORTANT! We sometimes talk of t as the root of the tree. But we also use t to denote the whole tree. 2 9 0 8 3 5 7

Binary Search Tree (BST) 18 If the tree data is ordered and has no duplicate values: in every subtree, All left descendents of a node come before the node All right descendents of a node come after the node Search can be made MUCH faster 2 5 8 0 3 7 9 /** Return true iff x if the datum in a node of tree t. Precondition: node is a BST and all data are non-null */ boolean treesearch (int x, TreeNode<Integer> t) { if (t== null) return false; } if (x < t.datum) return treesearch(x, t.left); if (x == t.datum) return true; return treesearch(x, t.right);

Building a BST 19 To insert a new item Pretend to look for the item Put the new node in the place where you fall off the tree apr feb jan mar jun may This can be done using either recursion or iteration jul Example Tree uses alphabetical order Months appear for insertion in calendar order

What can go wrong? 20 A BST makes searches very fast, unless Nodes are inserted in increasing order In this case, we re basically building a linked list (with some extra wasted space for the left fields, which aren t being used) apr feb jan jul jun BST works great if data arrives in random order mar may

Printing contents of BST 21 Because of ordering rules for a BST, it s easy to print the items in alphabetical order Recursively print left subtree Print the node Recursively print right subtree /** Print BST t in alpha order */ private static void print(treenode<t> t) { if (t== null) return; print(t.left); System.out.print(t.datum); print(t.right); }

Tree traversals 22 Walking over the whole tree is a tree traversal Done often enough that there are standard names Previous example: in-order traversal n Process left subtree n Process root n Process right subtree Note: Can do other processing besides printing Other standard kinds of traversals preorder traversal w Process root w Process left subtree w Process right subtree postorder traversal w Process left subtree w Process right subtree w Process root level-order traversal w Not recursive uses a queue. We discuss later

Some useful methods 23 /** Return true iff node t is a leaf */ public static boolean isleaf(treenode<t> t) { return t!= null && t.left == null && t.right == null; } /** Return height of node t (postorder traversal) */ public static int height(treenode<t> t) { if (t== null) return -1; //empty tree return 1 + Math.max(height(t.left), height(t.right)); } /** Return number of nodes in t (postorder traversal) */ public static int numnodes(treenode<t> t) { if (t== null) return 0; return 1 + numnodes(t.left) + numnodes(t.right); }

Useful facts about binary trees 24 Max # of nodes at depth d: 2 d If height of tree is h min # of nodes: h + 1 max #of nodes in tree: 2 0 + + 2 h = 2 h+1 1 Complete binary tree All levels of tree down to a certain depth are completely filled depth 0 1 2 4 7 8 5 5 2 0 4 Height 2, maximum number of nodes 2 4 Height 2, minimum number of nodes

Things to think about 25 What if we want to delete data from a BST? jan A BST works great as long as it s balanced How can we keep it balanced? This turns out to be hard enough to motivate us to create other kinds of trees apr feb jul jun mar may

Tree Summary 26 A tree is a recursive data structure Each node has 0 or more successors (children) Each node except the root has exactly one predecessor (parent) All node are reachable from the root A node with no children (or empty children) is called a leaf Special case: binary tree Binary tree nodes have a left and a right child Either or both children can be empty (null) Trees are useful in many situations, including exposing the recursive structure of natural language and computer programs