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

Similar documents
tree nonlinear Examples

Topic 14. The BinaryTree ADT

Programming II (CS300)

Recursion Chapter 17. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

TREES. Trees - Introduction

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

Binary Trees, Binary Search Trees

The Binary Search Tree ADT

Linked Structures Chapter 13. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

CS24 Week 8 Lecture 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

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

Trees. CSE 373 Data Structures

Binary Trees

CS302 - Data Structures using C++

BBM 201 Data structures

Chapter 20: Binary Trees

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

COMP : Trees. COMP20012 Trees 219

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

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

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

Garbage Collection: recycling unused memory

Cpt S 122 Data Structures. Data Structures Trees

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

Data Structures and Algorithms

BST Implementation. Data Structures. Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr University of Ain Shams

TREES Lecture 12 CS2110 Fall 2016

Tree. A path is a connected sequence of edges. A tree topology is acyclic there is no loop.

Definitions A A tree is an abstract t data type. Topic 17. "A tree may grow a. its leaves will return to its roots." Properties of Trees

Why Do We Need Trees?

March 20/2003 Jayakanth Srinivasan,

Lec 17 April 8. Topics: binary Trees expression trees. (Chapter 5 of text)

Trees. Eric McCreath

TREES Lecture 10 CS2110 Spring2014

CMPSCI 187: Programming With Data Structures. Lecture #28: Binary Search Trees 21 November 2011

Tree traversals and binary trees

Binary Search Trees Treesort

Trees. Truong Tuan Anh CSE-HCMUT

Data Structures Question Bank Multiple Choice

Trees. A tree is a directed graph with the property

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

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

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

Graphs Chapter 24. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Analysis of Algorithms

Data Structures and Algorithms for Engineers

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

Linked Structures - Review Chapter 13. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Advanced Tree Data Structures

Section 5.5. Left subtree The left subtree of a vertex V on a binary tree is the graph formed by the left child L of V, the descendents

CS102 Binary Search Trees

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

Binary Search Trees. Analysis of Algorithms

CE 221 Data Structures and Algorithms

Terminology. The ADT Binary Tree. The ADT Binary Search Tree

Topic 18 Binary Trees "A tree may grow a thousand feet tall, but its leaves will return to its roots." -Chinese Proverb

Trees! Ellen Walker! CPSC 201 Data Structures! Hiram College!

Balanced Binary Search Trees

Friday Four Square! 4:15PM, Outside Gates

4/18/ Binary Search Trees (BSTs) 17.1 Adding an Element to a BST Removing an Element from a BST. 17.

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

Data Structures. Trees. By Dr. Mohammad Ali H. Eljinini. M.A. Eljinini, PhD

Binary Trees and Binary Search Trees

Algorithms. AVL Tree

IX. Binary Trees (Chapter 10)

TREES Lecture 12 CS2110 Spring 2018

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

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

Algorithms and Data Structures

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

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

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

CMPT 225. Binary Search Trees

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

Collections Chapter 12. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

The tree data structure. Trees COL 106. Amit Kumar Shweta Agrawal. Acknowledgement :Many slides are courtesy Douglas Harder, UWaterloo

Introduction. for large input, even access time may be prohibitive we need data structures that exhibit times closer to O(log N) binary search tree

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

DATA STRUCTURES AND ALGORITHMS. Hierarchical data structures: AVL tree, Bayer tree, Heap

Algorithms. Deleting from Red-Black Trees B-Trees

CS 206 Introduction to Computer Science II

Principles of Computer Science

Tree Structures. A hierarchical data structure whose point of entry is the root node

CSI33 Data Structures

Announcements. Midterm exam 2, Thursday, May 18. Today s topic: Binary trees (Ch. 8) Next topic: Priority queues and heaps. Break around 11:45am

Trees, Binary Trees, and Binary Search Trees

Module 4: Index Structures Lecture 13: Index structure. The Lecture Contains: Index structure. Binary search tree (BST) B-tree. B+-tree.

SCJ2013 Data Structure & Algorithms. Binary Search Tree. Nor Bahiah Hj Ahmad

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

CmpSci 187: Programming with Data Structures Spring 2015

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

Binary Trees. Reading: Lewis & Chase 12.1, 12.3 Eck Programming Course CL I

Trees. Estruturas de Dados / Programação 2 Árvores. Márcio Ribeiro twitter.com/marciomribeiro. Introduc)on. Hierarchical structure

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

Hierarchical data structures. Announcements. Motivation for trees. Tree overview

CSCI2100B Data Structures Trees

Binary search trees (chapters )

Tree Structures. Definitions: o A tree is a connected acyclic graph. o A disconnected acyclic graph is called a forest

Transcription:

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

2 Scope Trees: Trees as data structures Tree terminology Tree implementations Analyzing tree efficiency Tree traversals Expression trees Wk12.3 Slide 2

3 Trees A tree is a non-linear structure in which elements are organized into a hierarchy A tree is comprised of a set of nodes in which elements are stored and edges connect one node to another Each node is located on a particular level There is only one root node in the tree Root Root Edges Level 0 Node Node Node Nodes Level 1 Node Node Level 2 Wk12.3 Slide 3

4 Trees Nodes at the lower level of a tree are the children of nodes at the previous level A node can have only one parent, but may have multiple children Nodes that have the same parent are siblings The root is the only node which has no parent Node A is the Parent of Nodes D and E Root Level 0 Children of Node A Node A Node B Node C Level 1 Node D Node E Siblings Level 2 Wk12.3 Slide 4

5 Trees A node that has no children is a leaf node A node that is not the root and has at least one child is an internal node A subtree is a tree structure that makes up part of another tree We can follow a path through a tree from parent to child, starting at the root A node is an ancestor of a node if it is above it on the path from the root. Wk12.3 Slide 5

6 Trees Nodes that can be reached by following a path from a particular node are the descendants of that node The level of a node is the length of the path from the root to the node The path length is the number of edges to get from the root to the node The height of a tree is the length of the longest path from the root to a leaf Root Level 0 Height = 2 Node A Node B Node C Level 1 Node D Node E Level 2 Wk12.3 Slide 6

7 Trees Quiz What are the descendents of node B? What is the level of node E? What is the path length to get from the root to node G? What is the height of this tree? Wk12.3 Slide 7

8 Classifying Trees Trees can be classified in many ways One important criterion is the maximum number of children any node in the tree may have This may be referred to as the order of the tree General trees have no limit to the number of children a node may have A tree that limits each node to no more than n children is referred to as an n-ary tree The tree for play TicTacToe is an 9-ary tree (at most 9 moves) Wk12.3 Slide 8

9 Binary Trees Trees in which nodes may have at most two children are called binary trees Root Node A Node B Node C Node D Node E Node F Wk12.3 Slide 9

10 Balanced Trees A tree is balanced if all of the leaves of the tree are on the same level or within one level of each other Wk12.3 Slide 10

11 Full and Complete Trees A balanced n-ary tree with m elements has a height of log n m A balanced binary tree with n nodes has a height of log 2 n An n-ary tree is full if all leaves of the tree are at the same height and every non-leaf node has exactly n children A tree is complete if it is full, or full to the next-to-last level with all leaves at the bottom level on the left side of the tree Full Binary Tree Root Complete Binary Tree Root Node A Node B Node A Node B Node C Node D Node E Node F Node C Node D Node E Wk12.3 Slide 11

12 Full and Complete Trees Three complete trees: Which trees are full? Only tree c is full Wk12.3 Slide 12

13 Implementing Trees An obvious choice for implementing trees is a linked structure Array-based implementations are the less obvious choice, but are sometimes useful Let's first look at the strategy behind two array-based implementations Wk12.3 Slide 13

14 Computed Child Links For full or complete trees, can use an array to represent a tree For a binary tree with any element stored in position n, the element s left child is stored in array position (2n+1) the element s right child is stored in array position (2*(n+1)) If the represented tree is not complete or relatively complete, this approach can waste large amounts of array space Wk12.3 Slide 14

15 Simulated Child Links Each element of the array is an object that stores a reference to the tree element and the array index of each child This approach is modeled after the way operating systems manage memory Array positions are allocated on a first-come, first-served basis Wk12.3 Slide 15

16 Tree Traversals For linear structures, the process of iterating through the elements is fairly obvious (forwards or backwards) For non-linear structures like a tree, the possibilities are more interesting Let's look at four classic ways of traversing the nodes of a tree All traversals start at the root of the tree Each node can be thought of as the root of a subtree Wk12.3 Slide 16

17 Tree Traversals Preorder: visit the root, then traverse the subtrees from left to right Inorder: traverse the left subtree, then visit the root, then traverse the right subtree Postorder: traverse the subtrees from left to right, then visit the root Level-order: visit each node at each level of the tree from top (root) to bottom and left to right Wk12.3 Slide 17

18 Tree Traversals Preorder: A B D E C Inorder: D B E A C Postorder: D E B C A Level-Order: A B C D E Wk12.3 Slide 18

19 Tree Traversals Recursion simplifies the implementation of tree traversals Preorder (pseudocode): Inorder: Visit node Traverse (left child) Traverse (right child) Traverse (left child) Visit node Traverse (right child) Wk12.3 Slide 19

20 Tree Traversals Postorder: Traverse (left child) Traverse (right child) Visit node A level-order traversal is more complicated It requires the use of extra structures (such as queues and/or lists) to create the necessary order Wk12.3 Slide 20

21 A Binary Tree ADT Wk12.3 Slide 21

22 A Binary Tree ADT Wk12.3 Slide 22

23 public interface BinaryTreeADT<T> { public T getrootelement(); public boolean isempty(); public int size(); public boolean contains(t targetelement); public T find(t targetelement); public String tostring(); public Iterator<T> iterator(); public Iterator<T> iteratorinorder(); public Iterator<T> iteratorpreorder(); public Iterator<T> iteratorpostorder(); public Iterator<T> iteratorlevelorder(); } A Binary Tree ADT Wk12.3 Slide 23

24 Expression Trees An expression tree is a tree that shows the relationships among operators and operands in an expression An expression tree is evaluated from the bottom up Wk12.3 Slide 24

25 Expression Tree Evaluation Let's look at an example that creates an expression tree from a postfix expression and then evaluates it This is a modification of an earlier solution It uses a stack of expression trees to build the complete expression tree Wk12.3 Slide 25

26 Building an Expression Tree Input in Postfix: 5 3 4 * 9 + Wk12.3 Slide 26

27 Building an Expression Tree Input in Postfix: 5 3 4 * 9 + Wk12.3 Slide 27

28 Decision Trees A decision tree is a tree whose nodes represent decision points, and whose children represent the options available The leaves of a decision tree represent the possible conclusions that might be drawn A simple decision tree, with yes/no questions, can be modeled by a binary tree Decision trees are useful in diagnostic situations (medical, car repair, etc.) Wk12.3 Slide 28

29 Decision Trees A simplified decision tree for diagnosing back pain: Wk12.3 Slide 29

Trees can be written to or read from a File 30 public DecisionTree(String filename) throws FileNotFoundException { File inputfile = new File(filename); Scanner scan = new Scanner(inputFile); int numbernodes = scan.nextint(); scan.nextline(); int root = 0, left, right; List<LinkedBinaryTree<String>> nodes = new java.util.arraylist<linkedbinarytree<string>>(); for (int i = 0; i < numbernodes; i++) nodes.add(i,new LinkedBinaryTree<String>(scan.nextLine())); while (scan.hasnext()) { root = scan.nextint(); left = scan.nextint(); right = scan.nextint(); scan.nextline(); nodes.set(root, new LinkedBinaryTree<String>((nodes.get(root)).getRootElement(), nodes.get(left), nodes.get(right))); } tree = nodes.get(root); } Wk12.3 Slide 30

Implementing Binary Trees with Links 31 Now let's explore an implementation of a binary tree using links The LinkedBinaryTree class holds a reference to the root The BinaryTreeNode class represents each node, with links to a possible left and/or right child Wk12.3 Slide 31

32 Implementing Binary Trees with Links The BinaryTreeNode class represents each node, with links to a possible left and/or right child public class BinaryTreeNode<T> { protected T element; protected BinaryTreeNode<T> left, right; /** * Creates a new tree leaf node with the specified data. * @param obj the element that will become a part of the new tree node */ public BinaryTreeNode(T obj) { element = obj; left = null; right = null; } Wk12.3 Slide 32

Binary Trees with Links Building Trees 33 The BinaryTreeNode constructor builds an internal or root node left and/or right child are supplied as parameters. // Creates a new tree node with the specified left and right children public BinaryTreeNode(T obj, LinkedBinaryTree<T> left, LinkedBinaryTree<T> right) { element = obj; if (left == null) this.left = null; else this.left = left.getrootnode(); } if (right == null) this.right = null; else this.right = right.getrootnode(); Wk12.3 Slide 33

34 Binary Trees Child Getters and Setters public BinaryTreeNode<T> getright() { return right; } public void setright(binarytreenode<t> node) { right = node; } public BinaryTreeNode<T> getleft() { return left; } public void setleft(binarytreenode<t> node) { left = node; } Wk12.3 Slide 34

Recall: Traversing a Maze Using Recursion 35 // Attempts to recursively traverse the maze. public boolean traverse(int row, int column) { boolean done = false; if (maze.validposition(row, column)) { maze.tryposition(row, column); // mark this cell as tried if (row == maze.getrows()-1 && column == maze.getcolumns()-1) done = true; // the maze is solved else { done = traverse(row+1, column); // down if (!done) done = traverse(row, column+1); // right if (!done) done = traverse(row-1, column); // up if (!done) done = traverse(row, column-1); // left } if (done) // this location is part of the final path maze.markpath(row, column); } return done; } } Wk12.3 Slide 35

Execution Tree for understanding Program Flow 36 // Rrecursively traverse the maze. public boolean traverse(int row, int column) { // Base Case Test if reached goal else { traverse(row+1, column ); // down traverse(row, column+1); // right traverse(row-1, column ); // up traverse(row, column-1); // left } } Execution Tree traverse(0,0) down left right up t (1,0) t (0,1) t(-1,0) t(0,-1) down right up left t (2,0) t (1,1) t(0,0) t(1,-1) Wk12.3 Slide 36

37 Using Trees to Represent Knowledge - TicTacToe As was seen with LearningPlayer in TicTacToe, Trees can be used to represent and capture knowledge. TicTacToe Game Knowledge Tree empty board X takes Square 1 X takes Square 2 X takes Square 9 X X O X O takes Square 1 X Wk12.3 Slide 37

38 Key Things to take away: Trees: A tree is a nonlinear structure whose elements form a hierarchy Can be stored in an array using simulated link strategy Trees can be balanced or non-balanced A balanced N-ary tree with m elements has height log n m Four basic tree traversal methods: preorder, inorder, postorder, level order Preorder: visit the node first, then its children left to right Inorder: visit the left child, then the node, then its right child Postorder: visit the children left to right, then visit the node itself Level-Order: visit all nodes in a level left to right, starting with the root Decision Trees can be read from files and used to create an expert system Execution Trees can be used to Describe Recursive program flow Trees can be used to store and update knowledge for training AI programs Wk12.3 Slide 38

39 Binary Search Trees Binary search tree processing Using BSTs to solve problems BST implementations Strategies for balancing BSTs Wk12.3 Slide 39

40 Binary Search Trees A search tree is a tree whose elements are organized to facilitate finding a particular element when needed A binary search tree is a binary tree that, for each node n the left subtree of n contains elements less than the element stored in n the right subtree of n contains elements greater than or equal to the element stored in n This is how finds your websites! Wk12.3 Slide 40

41 How Google finds Websites Web Crawlers search the Internet for new websites Read every webpage and every word HUGE files of data Petabytes! Data Centers process this data And Update Google Search Trees Every webpage, every day Wk12.3 Slide 41

Google and Amazon Data Centers 42 Wk12.3 Slide 42

43 Data Centers A Closer Look All this just to update some search trees Some VERY BIG search trees! For more info: Dr. Mohamed Hefeeda Big-Data and Multimedia Wk12.3 Slide 43

44 Binary Search Trees To determine if a particular value exists in a tree start at the root compare target to element at current node move left from current node if target is less than element in the current node move right from current node if target is greater than element in the current node We eventually find the target or hit the end of a path (target is not found) How to find node with key value 38? Start at Root and compare 38 to 45 38 < 45 so go to left subtree 38 > 12 so go to the right 38 > 15 so go to the right again 38 < 42 so go left 38 > 33 so go right 38 found! Return Object stored at this node 12 15 33 45 42 38 Wk12.3 Slide 44

Binary Search Trees 45 The particular shape of a binary search tree depends on the order in which the elements are added The shape may also be dependant on any additional processing performed on the tree to reshape it Binary search trees can hold any type of data, so long as we have a way to determine relative ordering Objects implementing the Comparable interface provide such capability Wk12.3 Slide 45

46 Binary Search Trees Process of adding an element is similar to finding an element New elements are added as leaf nodes Start at the root, follow path dictated by existing elements until you find no child in the desired direction Then add the new element Wk12.3 Slide 46

47 Binary Search Trees BST operations: Wk12.3 Slide 47

48 BST Element Removal Removing a target in a BST is not as simple as that for linear data structures After removing the element, the resulting tree must still be valid Three distinct situations must be considered when removing an element 1. Node to remove is a leaf 2. Node to remove has one child 3. Node to remove has two children Wk12.3 Slide 48

49 BST Element Removal Dealing with the situations Node is a leaf: it can simply be deleted Node has one child: the deleted node is replaced by the child Node has two children: an appropriate node is found lower in the tree and used to replace the node Good choice: inorder successor (node that follows in an inorder traversal) The inorder successor is guaranteed not to have a left child Thus, removing the inorder successor to replace the deleted node will result in one of the first two situations (it s a leaf or has one child) Wk12.3 Slide 49

50 Balancing BSTs As operations are performed on a BST, it could become highly unbalanced (a degenerate tree) Wk12.3 Slide 50

51 Balancing BSTs Text implementation does not ensure the BST stays balanced Other approaches do, such as AVL trees and red/black trees We will explore rotations operations on binary search trees to assist in the process of keeping a tree balanced Rotations do not solve all problems created by unbalanced trees, but show the basic algorithmic processes that are used to manipulate trees Wk12.3 Slide 51

52 Balancing BSTs A right rotation can be performed at any level of a tree, around the root of any subtree Corrects an imbalance caused by a long path in the left subtree of the left child of the root To correct the imbalance A: Make the left child element of the root the new root element B: Make the former root element the right child element of the new root C: Make the right child of what was the left child of the former root, the new left child of the former root Wk12.3 Slide 52

53 Balancing BSTs A left rotation can be performed at any level of a tree, around the root of any subtree Corrects an imbalance caused by a long path in the right subtree of the left child of the root To correct the imbalance A: Make the right child element of the root the new root element B: Make the former root element the left child element of the new root C: Make the left child of what was the right child of the former root, the new right child of the former root Wk12.3 Slide 53

54 Key Things to take away: Trees Part 2: CMPT 125/126 focused on introducing trees and tree algorithms Will go into more depth in CMPT225 and beyond A binary search tree is a binary tree with the added properties that: the left child s key is less than the parent s key value the right child s key is more than the parent s this is a recursive definition which results in maintaining sorted order and allows for O(log m N) searches Trees are used to provide efficient implementations for other collections Trees are critical to making the Internet Searching work Wk12.3 Slide 54

55 References: 1. J. Lewis, P. DePasquale, and J. Chase., Java Foundations: Introduction to Program Design & Data Structures. Addison-Wesley, Boston, Massachusetts, 3rd edition, 2014, ISBN 978-0-13-337046-1 Wk12.3 Slide 55