Eman A AlSukairi
200800236
Programming assignment
The code:
#include <iostream>
#include <deque>
#include <climits>
using namespace std;
class Node {
public:
int value;
Node *left;
Node *right;
};
void BreadthFirstTraversal(Node *root, int goal)
{
if (root == NULL) return;
deque <Node *> queue;
deque <Node *> path;
queue.push_back(root);
int x;
while (!queue.empty()) {
Node *p = queue.front();
x = p->value;
path.push_back(queue.front());
queue.pop_front();
if(x == goal)
{
cout << p->value << " -> goal is found \n\n";
break;
}
else
{
if (p->left != NULL)
queue.push_back(p->left);
if (p->right != NULL)
queue.push_back(p->right);
}
}
if (x == goal)
{
cout << "The path:\n\n";
while(!path.empty())
{
Node *p = path.front();
cout << p->value << " ";
path.pop_front();
}
cout << endl;
}
else
{
cout << "goal is not found!\n\n";
}
cout << endl;
}
void print(Node *root)
{
if (root == NULL)
return ;
cout << root->value << "\n";
if (root->left)
print(root->left);
if (root->right)
print(root->right);
}
int main()
{
Node a;
a.value=1;
a.left= NULL;
a.right=NULL;
Node b;
b.value=2;
b.left= NULL;
b.right=NULL;
a.left=&b;
Node c;
c.value=3;
c.left= NULL;
c.right=NULL;
a.right=&c;
Node d;
d.value=4;
d.left= NULL;
d.right=NULL;
b.left=&d;
Node e;
e.value=5;
e.left= NULL;
e.right=NULL;
b.right=&e;
Node f;
f.value=6;
f.left= NULL;
f.right=NULL;
c.left=&f;
Node *root;
root=&a;
cout << "Breadth First Search\n\n";
cout << "---------------------------\n\n";
cout << "The full tree:\n\n";
print(root);
cout << "\n\n";
BreadthFirstTraversal(root, 4);
return 0;
}
Output:
© Copyright 2026 Paperzz