Presentation is loading. Please wait.

Presentation is loading. Please wait.

2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas.

Similar presentations


Presentation on theme: "2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas."— Presentation transcript:

1 2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas Kuehne VUW COMP 103 Marcus Frean Depth-first vs breadth-first traversals

2 2 RECAP-TODAY RECAP  Building and Traversing Binary Trees TODAY  Depth-First vs Breadth-First Traversal  Chapter 16.2 ANNOUNCEMENTS  no new assignment next week

3 3 recap: depth-first traversals Variations:  1. pre-order:node, then children  2. in-order: left child, node, right child  3. post-order:children, then node A B E FD C A B C D E F C B D A F E C D B F E A A Maze Analogy keep your left hand on the wall,  1. pre-order:first encounter  2. in-order: second encounter  3. post-order:third encounter and act on

4 4  Prefix Notation (Polish notation) + x 5 2 / - 7 3 9 plus(times(5, 2), divide( minus(7, 3), 9 ) )  Infix Notation (5 x 2 ) + ( ( 7 – 3) / 9)  Postfix Notation (Reverse Polish) 5 2 x 7 3 – 9 / + Arithmetic expression trees + x / -259 73 No Parentheses

5 5 Depth-First Traversal in General Trees  Visit the subtree under each child before going to the next child  Pre-order: process the node, then process the subtrees  Post-order: process the subtrees, then process the node A B D E C H G MI K F L J

6 6 Depth-first Traversal, recursively  e.g., list all employee names  Use recursion (and iteration to step through the children) public void listAll() { System.out.println(this.name); for (OrgTreeNode child : this.children) child.listAll(); } Which traversal order does this implement?

7 7  Need to remember what nodes are still being worked on, and which of their children have been processed already  In a recursive depth-first traversal (eg. "ListAll" from earlier), activation stacks take care of the bookkeeping! A 1.print own name 2.process children... 3.return Managing Depth-First Traversal A B D E C H G MI K F L J B 1.print own name 2.process children... 3.return D 1.print own name 2.process children... 3.return …

8 8 Breadth-first Traversal  What about printing the nodes by level?  root first  then second level,  then third level, …. A B Julie Jenny D E F C Jenny Jude Jiles I…. A B D E C H G MI K F L J

9 9 Tracking State during Breadth-First Traversal  Breadth-First Traversal  What nodes do we have to remember?  Which order do we work on them? A B D E C H G MI K F L J

10 10 public void BreadthFirstTraversal(TreeNode root) { Queue todo = new LinkedList (); todo.offer(root); // add while (! todo.isEmpty()) { TreeNode node = todo.poll(); // remove System.out.println(node.name()); for (TreeNode child : node.getChildren()) todo.offer(child); } } Breadth-first Traversal: Use a Queue! Look Ma’, no recursion! A B D E C H G MI K F L J

11 11 public void DepthFirstTraversal(TreeNode root) { Stack todo = new Stack (); todo.push(root); // add while (! todo.isEmpty()) { TreeNode node = todo.pop(); // remove System.out.println(node.name()); for (TreeNode child : node.getChildren()) todo.push(child); } Depth-First Traversal: Use a Stack! A B D E C H G MI K F L J Look Ma’, no recursion! Which traversal order does this implement?

12 12 In-order Traversal, iteratively? D B H FCAI EG

13 13 Depth-First vs Breadth-First  Depth-First:  Visit one child and all of its descendants before its siblings  May visit root before, after, or between its children  +Requires only one branch to manage traversal!  − May find “costly” results first, and may not find results at all (infinite search trees)  Breadth-First (level-order):  Visit nodes in order of increasing depth  May choose nodes in a level in a specific order  − Requires accumulation of levels to manage traversal  +Finds minimal solutions and guarantees success!


Download ppt "2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas."

Similar presentations


Ads by Google