#include<iostream>
#include<queue>
using namespace std;
class node {
public:
node *left, *right;
int data;
};
node* insert(node *root, int data) {
if (!root) {
root = new node;
root->left = NULL;
root->right = NULL;
root->data = data;
return root;
}
queue<node *> q;
q.push(root);
while (!q.empty()) {
node *temp = q.front();
q.pop();
if (temp->left == NULL) {
temp->left = new node;
temp->left->left = NULL;
temp->left->right = NULL;
temp->left->data = data;
return root;
} else {
q.push(temp->left);
}
if (temp->right == NULL) {
temp->right = new node;
temp->right->left = NULL;
temp->right->right = NULL;
temp->right->data = data;
return root;
} else {
q.push(temp->right);
}
}
return root;
}
void bfs(node *head) {
if (!head) return;
queue<node*> q;
q.push(head);
while (!q.empty()) {
int qSize = q.size();
for (int i = 0; i < qSize; i++) {
node* currNode = q.front();
q.pop();
cout << "\t" << currNode->data;
if (currNode->left)
q.push(currNode->left);
if (currNode->right)
q.push(currNode->right);
}
}
}
int main() {
node *root = NULL;
int data;
char ans;
do {
cout << "\nEnter data => ";
cin >> data;
root = insert(root, data);
cout << "Do you want to insert one more node? (y/n): ";
cin >> ans;
} while (ans == 'y' || ans == 'Y');
cout << "\nBFS Traversal:\n";
bfs(root);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgbm9kZSB7CnB1YmxpYzoKICAgIG5vZGUgKmxlZnQsICpyaWdodDsKICAgIGludCBkYXRhOwp9OwoKbm9kZSogaW5zZXJ0KG5vZGUgKnJvb3QsIGludCBkYXRhKSB7CiAgICBpZiAoIXJvb3QpIHsKICAgICAgICByb290ID0gbmV3IG5vZGU7CiAgICAgICAgcm9vdC0+bGVmdCA9IE5VTEw7CiAgICAgICAgcm9vdC0+cmlnaHQgPSBOVUxMOwogICAgICAgIHJvb3QtPmRhdGEgPSBkYXRhOwogICAgICAgIHJldHVybiByb290OwogICAgfQoKICAgIHF1ZXVlPG5vZGUgKj4gcTsKICAgIHEucHVzaChyb290KTsKCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIG5vZGUgKnRlbXAgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgaWYgKHRlbXAtPmxlZnQgPT0gTlVMTCkgewogICAgICAgICAgICB0ZW1wLT5sZWZ0ID0gbmV3IG5vZGU7CiAgICAgICAgICAgIHRlbXAtPmxlZnQtPmxlZnQgPSBOVUxMOwogICAgICAgICAgICB0ZW1wLT5sZWZ0LT5yaWdodCA9IE5VTEw7CiAgICAgICAgICAgIHRlbXAtPmxlZnQtPmRhdGEgPSBkYXRhOwogICAgICAgICAgICByZXR1cm4gcm9vdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBxLnB1c2godGVtcC0+bGVmdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAodGVtcC0+cmlnaHQgPT0gTlVMTCkgewogICAgICAgICAgICB0ZW1wLT5yaWdodCA9IG5ldyBub2RlOwogICAgICAgICAgICB0ZW1wLT5yaWdodC0+bGVmdCA9IE5VTEw7CiAgICAgICAgICAgIHRlbXAtPnJpZ2h0LT5yaWdodCA9IE5VTEw7CiAgICAgICAgICAgIHRlbXAtPnJpZ2h0LT5kYXRhID0gZGF0YTsKICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcS5wdXNoKHRlbXAtPnJpZ2h0KTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcm9vdDsKfQoKdm9pZCBiZnMobm9kZSAqaGVhZCkgewogICAgaWYgKCFoZWFkKSByZXR1cm47CgogICAgcXVldWU8bm9kZSo+IHE7CiAgICBxLnB1c2goaGVhZCk7CgogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgcVNpemUgPSBxLnNpemUoKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgIG5vZGUqIGN1cnJOb2RlID0gcS5mcm9udCgpOwogICAgICAgICAgICBxLnBvcCgpOwoKICAgICAgICAgICAgY291dCA8PCAiXHQiIDw8IGN1cnJOb2RlLT5kYXRhOwoKICAgICAgICAgICAgaWYgKGN1cnJOb2RlLT5sZWZ0KQogICAgICAgICAgICAgICAgcS5wdXNoKGN1cnJOb2RlLT5sZWZ0KTsKICAgICAgICAgICAgaWYgKGN1cnJOb2RlLT5yaWdodCkKICAgICAgICAgICAgICAgIHEucHVzaChjdXJyTm9kZS0+cmlnaHQpOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBub2RlICpyb290ID0gTlVMTDsKICAgIGludCBkYXRhOwogICAgY2hhciBhbnM7CgogICAgZG8gewogICAgICAgIGNvdXQgPDwgIlxuRW50ZXIgZGF0YSA9PiAiOwogICAgICAgIGNpbiA+PiBkYXRhOwoKICAgICAgICByb290ID0gaW5zZXJ0KHJvb3QsIGRhdGEpOwoKICAgICAgICBjb3V0IDw8ICJEbyB5b3Ugd2FudCB0byBpbnNlcnQgb25lIG1vcmUgbm9kZT8gKHkvbik6ICI7CiAgICAgICAgY2luID4+IGFuczsKCiAgICB9IHdoaWxlIChhbnMgPT0gJ3knIHx8IGFucyA9PSAnWScpOwoKICAgIGNvdXQgPDwgIlxuQkZTIFRyYXZlcnNhbDpcbiI7CiAgICBiZnMocm9vdCk7CgogICAgcmV0dXJuIDA7Cn0K
MTAKYWJhCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtz
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks