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)

Presentation on theme: "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)"— Presentation transcript:

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.

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); } };

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