fork download
  1. #include<iostream>
  2. #include<queue>
  3. using namespace std;
  4.  
  5. class node {
  6. public:
  7. node *left, *right;
  8. int data;
  9. };
  10.  
  11. node* insert(node *root, int data) {
  12. if (!root) {
  13. root = new node;
  14. root->left = NULL;
  15. root->right = NULL;
  16. root->data = data;
  17. return root;
  18. }
  19.  
  20. queue<node *> q;
  21. q.push(root);
  22.  
  23. while (!q.empty()) {
  24. node *temp = q.front();
  25. q.pop();
  26.  
  27. if (temp->left == NULL) {
  28. temp->left = new node;
  29. temp->left->left = NULL;
  30. temp->left->right = NULL;
  31. temp->left->data = data;
  32. return root;
  33. } else {
  34. q.push(temp->left);
  35. }
  36.  
  37. if (temp->right == NULL) {
  38. temp->right = new node;
  39. temp->right->left = NULL;
  40. temp->right->right = NULL;
  41. temp->right->data = data;
  42. return root;
  43. } else {
  44. q.push(temp->right);
  45. }
  46. }
  47. return root;
  48. }
  49.  
  50. void bfs(node *head) {
  51. if (!head) return;
  52.  
  53. queue<node*> q;
  54. q.push(head);
  55.  
  56. while (!q.empty()) {
  57. int qSize = q.size();
  58.  
  59. for (int i = 0; i < qSize; i++) {
  60. node* currNode = q.front();
  61. q.pop();
  62.  
  63. cout << "\t" << currNode->data;
  64.  
  65. if (currNode->left)
  66. q.push(currNode->left);
  67. if (currNode->right)
  68. q.push(currNode->right);
  69. }
  70. }
  71. }
  72.  
  73. int main() {
  74. node *root = NULL;
  75. int data;
  76. char ans;
  77.  
  78. do {
  79. cout << "\nEnter data => ";
  80. cin >> data;
  81.  
  82. root = insert(root, data);
  83.  
  84. cout << "Do you want to insert one more node? (y/n): ";
  85. cin >> ans;
  86.  
  87. } while (ans == 'y' || ans == 'Y');
  88.  
  89. cout << "\nBFS Traversal:\n";
  90. bfs(root);
  91.  
  92. return 0;
  93. }
  94.  
Success #stdin #stdout 0s 5292KB
stdin
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
stdout
Enter data => Do you want to insert one more node? (y/n): 
BFS Traversal:
	10