1 Breadth First Traversal
2 Objectives You will be able to Do a breadth first traversal of a binary tree. Display a binary tree in its normal (vertical) orientation. Root at the top. Leaves at the bottom.
3 Getting Started Download _03_09_BST_Display/ _03_09_BST_Display/ File BST_Demo_2.zip Expand Build and run
4 Program in Action
5 Breadth First Traversal Let's add a Breadth First Traversal Textbook, page 226 Top down, left to right traversal Simple to implement with a queue.
6 Breadth First Traversal Start by putting root node into the queue. While queue is not empty: Dequeue first element. Visit that node. Add its children to the queue
7 Implementing the Queue Drozdek uses the Queue template from the Standard Template Library. Adds a thin wrapper to provide conventional names for methods: Enqueue Dequeue Rename the template file genBST3.h
8 genBST3.h #pragma once; #include using namespace std; template class Queue : public queue { public: T dequeue() { T tmp = front(); queue ::pop(); return tmp; } void enqueue(const T& el) { push(el); } };
9 Adding Breadth First Traversal Add to public section of class BST template: void breadthFirst();
10 Adding Breadth First Traversal template void BST ::breadthFirst() { Queue *> queue; BSTNode *p = root; if (p != 0) { queue.enqueue(p); while (!queue.empty()) { p = queue.dequeue(); visit(p); if (p->left != 0) { queue.enqueue(p->left); } if (p->right != 0) { queue.enqueue(p->right); }
11 Using the Breadth First Traversal Add at end of main(): cout << endl << endl << "Breadth First traversal: " << endl; my_BST.breadthFirst(); cout << endl; Comment out other traversals. Update the #include for genBST
12 Breadth First Traversal