CMSC 202, Version 5/02 1 Trees. CMSC 202, Version 5/02 2 Tree Basics 1.A tree is a set of nodes. 2.A tree may be empty (i.e., contain no nodes). 3.If.

Slides:



Advertisements
Similar presentations
Binary Trees Chapter 6. Linked Lists Suck By now you realize that the title to this slide is true… By now you realize that the title to this slide is.
Advertisements

Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
CS 171: Introduction to Computer Science II
Trees, Binary Trees, and Binary Search Trees COMP171.
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
Data Structures Data Structures Topic #8. Today’s Agenda Continue Discussing Table Abstractions But, this time, let’s talk about them in terms of new.
Lec 15 April 9 Topics: l binary Trees l expression trees Binary Search Trees (Chapter 5 of text)
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
Trees CMSC 433 Chapter 8.1 Nelson Padua-Perez Bill Pugh.
CSC 2300 Data Structures & Algorithms February 6, 2007 Chapter 4. Trees.
Binary Trees Chapter 6.
1 Chapter 18 Trees Objective To learn general trees and recursion binary trees and recursion tree traversal.
Tree.
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.
Chapter 19: Binary Trees. Objectives In this chapter, you will: – Learn about binary trees – Explore various binary tree traversal algorithms – Organize.
CS Data Structures Chapter 5 Trees. Chapter 5 Trees: Outline  Introduction  Representation Of Trees  Binary Trees  Binary Tree Traversals 
1 Joe Meehean. A A B B D D I I C C E E X X A A B B D D I I C C E E X X  Terminology each circle is a node pointers are edges topmost node is the root.
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
Chapter 5 Binary Trees. Definitions and Properties A binary tree is made up of a finite set of elements called nodes A binary tree is made up of a finite.
CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
1 Trees A tree is a data structure used to represent different kinds of data and help solve a number of algorithmic problems Game trees (i.e., chess ),
CMSC 341 Introduction to Trees. 8/3/2007 UMBC CMSC 341 TreeIntro 2 Tree ADT Tree definition  A tree is a set of nodes which may be empty  If not empty,
Tree (new ADT) Terminology:  A tree is a collection of elements (nodes)  Each node may have 0 or more successors (called children)  How many does a.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Data Structures and Algorithm Analysis Trees Lecturer: Jing Liu Homepage:
Trees : Part 1 Section 4.1 (1) Theory and Terminology (2) Preorder, Postorder and Levelorder Traversals.
Tree Traversals, TreeSort 20 February Expression Tree Leaves are operands Interior nodes are operators A binary tree to represent (A - B) + C.
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 6.
Binary Search Trees (BSTs) 18 February Binary Search Tree (BST) An important special kind of binary tree is the BST Each node stores some information.
M180: Data Structures & Algorithms in Java Trees & Binary Trees Arab Open University 1.
CMSC 341 Introduction to Trees. 2/21/20062 Tree ADT Tree definition –A tree is a set of nodes which may be empty –If not empty, then there is a distinguished.
Binary Tree. Some Terminologies Short review on binary tree Tree traversals Binary Search Tree (BST)‏ Questions.
1 Binary Trees and Binary Search Trees Based on Dale & Co: Object-Oriented Data Structures using C++ (graphics)
Binary Search Trees (BST)
Rooted Tree a b d ef i j g h c k root parent node (self) child descendent leaf (no children) e, i, k, g, h are leaves internal node (not a leaf) sibling.
Data Structures Using C++ 2E Chapter 11 Binary Trees.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
Binary Tree Implementation. Binary Search Trees (BST) Nodes in Left subtree has smaller values Nodes in right subtree has bigger values.
1 Joe Meehean. A A B B D D I I C C E E X X A A B B D D I I C C E E X X  Terminology each circle is a node pointers are edges topmost node is the root.
More Binary Search Trees, Project 2 Bryce Boe 2013/08/06 CS24, Summer 2013 C.
BINARY TREES Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms Discuss a binary.
TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
1 Trees : Part 1 Reading: Section 4.1 Theory and Terminology Preorder, Postorder and Levelorder Traversals.
Trees CSIT 402 Data Structures II 1. 2 Why Do We Need Trees? Lists, Stacks, and Queues are linear relationships Information often contains hierarchical.
1 CMSC 341 Introduction to Trees Textbook sections:
1 Trees. 2 Trees Trees. Binary Trees Tree Traversal.
Trees Saurav Karmakar
Lecture 1 (UNIT -4) TREE SUNIL KUMAR CIT-UPES.
Binary Trees.
CMSC 341 Introduction to Trees 8/3/2007 CMSC 341 Tree Intro.
Data Structures Binary Trees 1.
Binary Search Tree (BST)
CMSC 341 Introduction to Trees.
Binary Trees, Binary Search Trees
CS223 Advanced Data Structures and Algorithms
Binary Trees.
Trees 7/14/2009.
Binary Trees.
Trees CMSC 202, Version 5/02.
CMSC 202 Trees.
Binary Trees, Binary Search Trees
Binary Trees.
CMSC 341 Introduction to Trees CMSC 341 Tree Intro.
Chapter 20: Binary Trees.
Binary Trees.
Binary Search Trees CS 580U Fall 17.
Binary Trees, Binary Search Trees
Data Structures Using C++ 2E
Presentation transcript:

CMSC 202, Version 5/02 1 Trees

CMSC 202, Version 5/02 2 Tree Basics 1.A tree is a set of nodes. 2.A tree may be empty (i.e., contain no nodes). 3.If not empty, there is a distinguished node, r, called the root and zero or more non-empty subtrees T 1, T 2, T 3,….T k, each of whose roots is connected by a directed edge from r. 4.Trees are recursive in their definition and, therefore, in their implementation.

CMSC 202, Version 5/02 3 A General Tree A B G K CD L HIJ EF

CMSC 202, Version 5/02 4 Tree Terminology Tree terminology takes its terms from both nature and genealogy. A node directly below the root, r, of a subtree is a child of r, and r is called its parent. All children with the same parent are called siblings. A node with one or more children is called an internal node. A node with no children is called a leaf or external node.

CMSC 202, Version 5/02 5 Tree Terminology (con’t) A path in a tree is a sequence of nodes, (N 1, N 2, … N k ) such that N i is the parent of N i+1 for 1 <= i <= k. The length of this path is the number of edges encountered (k – 1). If there is a path from node N 1 to N 2, then N 1 is an ancestor of N 2 and N 2 is a descendant of N 1.

CMSC 202, Version 5/02 6 Tree Terminology (con’t) The depth of a node is the length of the path from the root to the node. The height of a node is the length of the longest path from the node to a leaf. The depth of a tree is the depth of its deepest leaf. The height of a tree is the height of the root. True or False – The height of a tree and the depth of a tree always have the same value.

CMSC 202, Version 5/02 7 Tree Storage First attempt - each tree node contains –The data being stored We assume that the objects contained in the nodes support all necessary operations required by the tree. –Links to all of its children Problem: A tree node can have an indeterminate number of children. So how many links do we define in the node?

CMSC 202, Version 5/02 8 First Child, Next Sibling Since we can’t know how many children a node can have, we can’t create a static data structure -- we need a dynamic one. Each node will contain –The data which supports all necessary operations –A link to its first child –A link to a sibling

CMSC 202, Version 5/02 9 First Child, Next Sibling Representation To be supplied in class

CMSC 202, Version 5/02 10 Tree Traversal Traversing a tree means starting at the root and visiting each node in the tree in some orderly fashion. “visit” is a generic term that means “perform whatever operation is applicable”. “Visiting” might mean –Print data stored in the tree –Check for a particular data item –Almost anything

CMSC 202, Version 5/02 11 Breadth-First Tree Traversals Start at the root. Visit all the root’s children. Then visit all the root’s grand-children. Then visit all the roots great-grand- children, and so on. This traversal goes down by levels. A queue can be used to implement this algorithm.

CMSC 202, Version 5/02 12 BF Traversal Pseudocode Create a queue, Q, to hold tree nodes Q.enqueue (the root) while (the queue is not empty) Node N = Q.dequeue( ) for each child, X, of N Q.enqueue (X) The order in which the nodes are dequeued is the BF traversal order.

CMSC 202, Version 5/02 13 Depth-First Traversal Start at the root. Choose a child to visit; remember those not chosen Visit all of that child’s children. Visit all of that child’s children’s children, and so on. Repeat until all paths have been traversed This traversal goes down a path until the end, then comes back and does the next path. A stack can be used to implement this algorithm.

CMSC 202, Version 5/02 14 DF Traversal Pseudocode Create a stack, S, to hold tree nodes S.push (the root) While (the stack is not empty) Node N = S.pop ( ) for each child, X, of N S.push (X) The order in which the nodes are popped is the DF traversal order.

CMSC 202, Version 5/02 15 Performance of BF and DF Traversals What is the asymptotic performance of breadth-first and depth-first traversals on a general tree?

CMSC 202, Version 5/02 16 Binary Trees A binary tree is a tree in which each node may have at most two children and the children are designated as left and right. A full binary tree is one in which each node has either two children or is a leaf. A perfect binary tree is a full binary tree in which all leaves are at the same level.

CMSC 202, Version 5/02 17 A Binary Tree

CMSC 202, Version 5/02 18 A binary tree? A full binary tree?

CMSC 202, Version 5/02 19 A binary tree? A full binary tree? A perfect binary tree?

CMSC 202, Version 5/02 20 Binary Tree Traversals Because nodes in binary trees have at most two children (left and right), we can write specialized versions of DF traversal. These are called –In-order traversal –Pre-order traversal –Post-order traversal

CMSC 202, Version 5/02 21 In-Order Traversal At each node –visit my left child first –visit me –visit my right child last

CMSC 202, Version 5/02 22 In-Order Traversal Code void inOrderTraversal(Node *nodePtr) { if (nodePtr != NULL) { inOrderTraversal(nodePtr->leftPtr); cout data << endl; inOrderTraversal(nodePtr->rightPtr); }

CMSC 202, Version 5/02 23 Pre-Order Traversal At each node –visit me first –visit my left child next –visit my right child last

CMSC 202, Version 5/02 24 Pre-Order Traversal Code void preOrderTraversal(Node *nodePtr) { if (nodePtr != NULL) { cout data << endl; preOrderTraversal(nodePtr->leftPtr); preOrderTraversal(nodePtr->rightPtr); }

CMSC 202, Version 5/02 25 Post-Order Traversal At each node –visit my left child first –visit my right child next –visit me last

CMSC 202, Version 5/02 26 Post-Order Traversal Code void postOrderTraversal(Node *nodePtr) { if (nodePtr != NULL) { postOrderTraversal(nodePtr->leftPtr); postOrderTraversal(nodePtr->rightPtr); cout data << endl; }

CMSC 202, Version 5/02 27 Binary Tree Operations Recall that the data stored in the nodes supports all necessary operators. We’ll refer to it as a “value” for our examples. Typical operations: –Create an empty tree –Insert a new value –Search for a value –Remove a value –Destroy the tree

CMSC 202, Version 5/02 28 Creating an Empty Tree Set the pointer to the root node equal to NULL.

CMSC 202, Version 5/02 29 Inserting a New Value The first value goes in the root node. What about the second value? What about subsequent values? Since the tree has no properties which dictate where the values should be stored, we are at liberty to choose our own algorithm for storing the data.

CMSC 202, Version 5/02 30 Searching for a Value Since there is no rhyme or reason to where the values are stored, we must search the entire tree using a BF or DF traversal.

CMSC 202, Version 5/02 31 Removing a Value Once again, since the values are not stored in any special way, we have lots of choices. Example: –First, find the value via BF or DF traversal. –Second, replace it with one of its descendants (if there are any).

CMSC 202, Version 5/02 32 Destroying the Tree We have to be careful of the order in which nodes are destroyed (deallocated). We have to destroy the children first, and the parent last (because the parent points to the children). Which traversal (in-order, pre-order, or post-order) would be best for this algorithm?

CMSC 202, Version 5/02 33 Giving Order to a Binary Tree Binary trees can be made more useful if we dictate the manner in which values are stored. When selecting where to insert new values, we could follow this rule: –“left is less” –“right is more” Note that this assumes no duplicate nodes (i.e., data).

CMSC 202, Version 5/02 34 Binary Search Trees A binary tree with the additional property that at each node, –the value in the node’s left child is smaller than the value in the node itself, and –the value in the node’s right child is larger than the value in the node itself.

CMSC 202, Version 5/02 35 A Binary Search Tree

CMSC 202, Version 5/02 36 Searching a BST Searching for the value X, given a pointer to the root 1.If the value in the root matches, we’re done. 2.If X is smaller than the value in the root, look in the root’s left subtree. 3.If X is larger than the value in the root, look in the root’s right subtree. A recursive routine – what’s the base case?

CMSC 202, Version 5/02 37 Inserting a Value in a BST To insert value X in a BST 1.Proceed as if searching for X. 2.When the search fails, create a new node to contain X and attach it to the tree at that node.

CMSC 202, Version 5/02 38 Inserting

CMSC 202, Version 5/02 39 Removing a Value From a BST Non-trivial Three separate cases: –node is a leaf (has no children) –node has a single child –node has two children

CMSC 202, Version 5/02 40 Removing

CMSC 202, Version 5/02 41 Destroying a BST The fact that the values in the nodes are in a special order doesn’t help. We still have to destroy each child before destroying the parent. Which traversal must we use?

CMSC 202, Version 5/02 42 Performance in a BST What is the asymptotic performance of: –insert –search –remove Is the performance of insert, search, and remove for a BST improved over that for a plain binary tree? –If so, why? –If not, why not?