in-order traversals

13
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada ece.uwaterloo.ca [email protected] © 2006-2013 by Douglas Wilhelm Harder. Some rights reserved. In-Order Traversals

Upload: shea

Post on 10-Feb-2016

67 views

Category:

Documents


0 download

DESCRIPTION

In-Order Traversals. Outline. In this topic we will look at: In-order traversals of binary search trees Limitations of in-order traversals with n - ary trees. In-order Traversals. 4.11.1. We’ve seen two depth-first traversals: Pre-order Post-order - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: In-Order  Traversals

ECE 250 Algorithms and Data Structures

Douglas Wilhelm Harder, M.Math. LELDepartment of Electrical and Computer EngineeringUniversity of WaterlooWaterloo, Ontario, Canada

[email protected]

© 2006-2013 by Douglas Wilhelm Harder. Some rights reserved.

In-Order Traversals

Page 2: In-Order  Traversals

2In-order traversals

Outline

In this topic we will look at:– In-order traversals of binary search trees– Limitations of in-order traversals with n-ary trees

Page 3: In-Order  Traversals

3In-order traversals

In-order Traversals

We’ve seen two depth-first traversals:– Pre-order– Post-order

First and last visits during an Euler walk

4.11.1

Page 4: In-Order  Traversals

4In-order traversals

In-order Traversals

For binary trees, there is a third intermediate visit– An in-order depth-first traversal

4.11.1

Page 5: In-Order  Traversals

5In-order traversals

In-order Traversals

This visits a binary search tree in order

A, B, C, D, E, F, G, H, I, J

4.11.1

Page 6: In-Order  Traversals

6In-order traversals

Application

An implementation of an in-order traversal

template <typename Type>void Binary_tree<Type>::in_order_traversal() const { if ( empty() ) { return; }

left()->in_order_traversal(); cout << retrieve(); right()->in_order_traversal();}

Page 7: In-Order  Traversals

7In-order traversals

In-order traversals on expression trees

Printing an expression tree (pretty printing or human-readable printing) using in-fix notation requires an in-order traversal

(3x + 5 + y)(z + 7)

4.11.1.1

Page 8: In-Order  Traversals

8In-order traversals

Application

class Expression_node;

void Expression_node::pretty_print() { if ( !leaf() ) { // If the precedence of the parent is higher than that of

the // current operator, we need to print an opening

parenthesis

if ( parent()->precedence() > precedence() ) { cout << "("; } // pre-order visit

left()->pretty_print(); // traverse left tree }

// The in-order step: print this object cout << this; // print this object

Page 9: In-Order  Traversals

9In-order traversals

Application

if ( !leaf() ) { right()->pretty_print(); // traverse right sub-tree

// If the precedence of the parent is higher than that of the

// current operator, we need to print a closing parenthesis

if ( parent()->precedence() > precedence() ) { cout << ")"; } // post-order visit }}

Page 10: In-Order  Traversals

10In-order traversals

In-order traversals on general trees

An in-order traversal does not make sense for either general trees or N-ary trees with N > 2

4.11.1.3

Page 11: In-Order  Traversals

11In-order traversals

Summary

In this topic, we have looked at:– In-order depth-first traversals– Limitations on N-ary and binary trees

Page 12: In-Order  Traversals

12In-order traversals

References

[1] Cormen, Leiserson, and Rivest, Introduction to Algorithms, MIT Press, 1990, §7.1-3, p.152.

[2] Weiss, Data Structures and Algorithm Analysis in C++, 3rd Ed., Addison Wesley, §6.5-6, p.215-25.

Page 13: In-Order  Traversals

13In-order traversals

Usage Notes

• These slides are made publicly available on the web for anyone to use

• If you choose to use them, or a part thereof, for a course at another institution, I ask only three things:– that you inform me that you are using the slides,– that you acknowledge my work, and– that you alert me of any mistakes which I made or changes which you

make, and allow me the option of incorporating such changes (with an acknowledgment) in my set of slides

Sincerely,Douglas Wilhelm Harder, [email protected]