Lecture No.13 Data Structures Dr. Sohail Aslam

Slides:



Advertisements
Similar presentations
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Advertisements

Main Index Contents 11 Main Index Contents Tree StructuresTree Structures (3 slides) Tree Structures Tree Node Level and Path Len. Tree Node Level and.
Chapter 12 C Data Structures Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
CS 240: Data Structures Monday, July 30 th Binary Search Trees.
Data Structures Using C++1 Chapter 11 Binary Trees.
Properties: -Each node has a value -The left subtree contains only values less than the parent node’s value -The right subtree contains only values greater.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Data Structures Trees.
Thought for the Day “To become truly great, one has to stand with people, not above them.” – Charles de Montesquieu.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Templatized Tree.
Chapter 19: Binary Trees. Objectives In this chapter, you will: – Learn about binary trees – Explore various binary tree traversal algorithms – Organize.
Lecture 17 Non-Linear data structures Richard Gesick.
1 TK1924 Program Design & Problem Solving Session 2011/2012 L8: Binary Trees.
Trees EENG212 Algorithms and Data Structures. Trees Outline  Introduction to Trees  Binary Trees: Basic Definitions  Traversing Binary Trees  Node.
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
S EARCHING AND T REES COMP1927 Computing 15s1 Sedgewick Chapters 5, 12.
CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
Binary Search Tree Traversal Methods. How are they different from Binary Trees?  In computer science, a binary tree is a tree data structure in which.
Lecture – Searching a Tree Neil Ghani University of Strathclyde.
 Trees Data Structures Trees Data Structures  Trees Trees  Binary Search Trees Binary Search Trees  Binary Tree Implementation Binary Tree Implementation.
Chapter 6 (cont’) Binary Tree. 6.4 Tree Traversal Tree traversal is the process of visiting each node in the tree exactly one time. This definition does.
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Modified for use at Midwestern State University Chapter.
Week 7 - Friday.  What did we talk about last time?  Trees in general  Binary search trees.
Binary Trees In computer science, a binary tree is a tree data structure in which each node has at most two children, which are referred to as the left.
1 Chapter 7 Objectives Upon completion you will be able to: Create and implement binary search trees Understand the operation of the binary search tree.
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)
ADT Binary Search Tree Ellen Walker CPSC 201 Data Structures Hiram College.
Lecture - 11 on Data Structures. Prepared by, Jesmin Akhter, Lecturer, IIT,JU Threaded Trees Binary trees have a lot of wasted space: the leaf nodes each.
Binary Search Trees (BST)
Traversing a tree means visiting each node in a specified order. There are different ways to traverse a tree. Tree Traversing Depth first search Pre-orderIn-orderPost-order.
Copyright © 2012 Pearson Education, Inc. Chapter 20: Binary Trees.
Concepts of Algorithms CSC-244 Unit 19 & 20 Binary Search Tree (BST) Shahid Iqbal Lone Computer College Qassim University K.S.A.
Binary Tree Implementation. Binary Search Trees (BST) Nodes in Left subtree has smaller values Nodes in right subtree has bigger values.
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.
Lecture 7: Searching a Tree Neil Ghani University of Strathclyde.
Chapter 7 Trees_ Part2 TREES. Depth and Height 2  Let v be a node of a tree T. The depth of v is the number of ancestors of v, excluding v itself. 
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 20: Binary Trees.
Binary Search Trees Chapter 7 Objectives
COMP 53 – Week Fourteen Trees.
Expression Tree The inner nodes contain operators while leaf nodes contain operands. a c + b g * d e f Start of lecture 25.
Chapter 25 Binary Search Trees
Lecture No.14 Data Structures Dr. Sohail Aslam
Binary Trees and Binary Search Trees
Recursive Objects (Part 4)
Binary Search Trees Chapter 7 Objectives
Week 6 - Wednesday CS221.
Binary Search Tree (BST)
Lecture No.15 Data Structures Dr. Sohail Aslam
Tree.
Lecture 22 Binary Search Trees Chapter 10 of textbook
Binary Trees, Binary Search Trees
Chapter 20: Binary Trees.
Chapter 22 : Binary Trees, AVL Trees, and Priority Queues
Data Structures Lecture 27 Sohail Aslam.
Map interface Empty() - return true if the map is empty; else return false Size() - return the number of elements in the map Find(key) - if there is an.
Chapter 21: Binary Trees.
Trees CMSC 202, Version 5/02.
Lecture 12 CS203 1.
Operations on Binary Tree
Chapter 10 1 – Binary Trees Tree Structures (3 slides)
Binary Tree Chapter 8 (cont’) Part2.
Data Structures Lecture 28 Sohail Aslam.
Search Sorted Array: Binary Search Linked List: Linear Search
Tree traversals BST properties Search Insertion
Non-Linear data structures
Data Structures Using C++ 2E
A Binary Tree is a tree in which each node has at most 2 children
Presentation transcript:

Lecture No.13 Data Structures Dr. Sohail Aslam

p->setRight( node ); Trace of insert 14 4 15 3 9 18 7 p 16 20 End of lecture 12 5 17 node 17, 9, 14, 5 p->setRight( node );

Cost of Search Given that a binary tree is level d deep. How long does it take to find out whether a number is already present? Consider the insert(17) in the example tree. Each time around the while loop, we did one comparison. After the comparison, we moved a level down.

Cost of Search With the binary tree in place, we can write a routine find(x) that returns true if the number x is present in the tree, false otherwise. How many comparison are needed to find out if x is present in the tree? We do one comparison at each level of the tree until either x is found or q becomes NULL.

Cost of Search If the binary tree is built out of n numbers, how many comparisons are needed to find out if a number x is in the tree? Recall that the depth of the complete binary tree built using ‘n’ nodes will be log2(n+1) – 1. For example, for n=100,000, log2(100001) is less than 20; the tree would be 20 levels deep.

Cost of Search If the tree is complete binary or nearly complete, searching through 100,000 numbers will require a maximum of 20 comparisons. Or in general, approximately log2(n). Compare this with a linked list of 100,000 numbers. The comparisons required could be a maximum of n.

Binary Search Tree A binary tree with the property that items in the left subtree are smaller than the root and items are larger or equal in the right subtree is called a binary search tree (BST). The tree we built for searching for duplicate numbers was a binary search tree. BST and its variations play an important role in searching algorithms.

Traversing a Binary Tree Suppose we have a binary tree, ordered (BST) or unordered. We want to print all the values stored in the nodes of the tree. In what order should we print them?

Traversing a Binary Tree Ways to print a 3 node tree: 14 4 15 (4, 14, 15), (4,15,14) (14,4,15), (14,15,4) (15,4,14), (15,14,4)

Traversing a Binary Tree In case of the general binary tree: N node L left subtree right subtree R (L,N,R), (L,R,N) (N,L,R), (N,R,L) (R,L,N), (R,N,L)

Traversing a Binary Tree Three common ways N node left subtree right subtree L R Preorder: (N,L,R) Inorder: (L,N,R) Postorder: (L,R,N)

Traversing a Binary Tree void preorder(TreeNode<int>* treeNode) { if( treeNode != NULL ) cout << *(treeNode->getInfo())<<" "; preorder(treeNode->getLeft()); preorder(treeNode->getRight()); }

Traversing a Binary Tree void inorder(TreeNode<int>* treeNode) { if( treeNode != NULL ) inorder(treeNode->getLeft()); cout << *(treeNode->getInfo())<<" "; inorder(treeNode->getRight()); }

Traversing a Binary Tree void postorder(TreeNode<int>* treeNode) { if( treeNode != NULL ) postorder(treeNode->getLeft()); postorder(treeNode->getRight()); cout << *(treeNode->getInfo())<<" "; }

Traversing a Binary Tree cout << "inorder: "; preorder( root); cout << "inorder: "; inorder( root ); cout << "postorder: "; postorder( root );

Traversing a Binary Tree 14 15 4 9 7 18 3 5 16 20 17 Preorder: 14 4 3 9 7 5 15 18 16 17 20

Traversing a Binary Tree 14 4 15 3 9 18 7 16 20 5 17 Inorder: 3 4 5 7 9 14 15 16 17 18 20

Traversing a Binary Tree 14 4 15 3 9 18 7 16 20 5 17 Postorder: 3 5 7 9 4 17 16 20 18 15 14

Recursive Call Recall that a stack is used during function calls. The caller function places the arguments on the stack and passes control to the called function. Local variables are allocated storage on the call stack. Calling a function itself makes no difference as far as the call stack is concerned.

Stack Layout during a call Here is stack layout when function F calls function F (recursively): Parameters(F) Local variables(F) Return address(F) Parameters(F) Local variables(F) Return address(F) Parameters(F) Local variables(F) Return address(F) sp sp End of lecture 13. sp At point of call During execution of F After call