Skip to content

Commit 5614072

Browse files
authored
Create Bst_traversals_all.cpp
1 parent 27ddf22 commit 5614072

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

Tree/Bst_traversals_all.cpp

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#include<iostream>
2+
#include<queue> // Add this line to include the queue header
3+
using namespace std;
4+
5+
class Node {
6+
public:
7+
int data;
8+
Node* left;
9+
Node* right;
10+
Node(int val, Node* l = nullptr, Node* r = nullptr) {
11+
data = val;
12+
left = l;
13+
right = r;
14+
}
15+
};
16+
17+
class BST {
18+
public:
19+
Node* root;
20+
BST() {
21+
root = nullptr;
22+
}
23+
24+
void preorder(Node* n) {
25+
if (n == nullptr)
26+
return;
27+
cout << n->data << " ";
28+
preorder(n->left);
29+
preorder(n->right);
30+
}
31+
32+
void inorder(Node* n) {
33+
if (n == nullptr)
34+
return;
35+
inorder(n->left);
36+
cout << n->data << " ";
37+
inorder(n->right);
38+
}
39+
40+
void postorder(Node* n) {
41+
if (n == nullptr)
42+
return;
43+
postorder(n->left);
44+
postorder(n->right);
45+
cout << n->data << " ";
46+
}
47+
48+
Node* insert(Node* node, int data) {
49+
if (node == nullptr) {
50+
return new Node(data);
51+
}
52+
else if (data <= node->data) {
53+
node->left = insert(node->left, data);
54+
}
55+
else {
56+
node->right = insert(node->right, data);
57+
}
58+
return node;
59+
}
60+
61+
void insert(int data) {
62+
root = insert(root, data);
63+
}
64+
65+
void levelOrderLToR() {
66+
if (root == nullptr)
67+
return;
68+
else {
69+
queue<Node*> q;
70+
q.push(root);
71+
Node* n;
72+
73+
cout << "Level-order traversal: ";
74+
while (!q.empty()) {
75+
n = q.front();
76+
q.pop();
77+
cout << n->data << " ";
78+
if (n->left != nullptr)
79+
q.push(n->left);
80+
if (n->right != nullptr)
81+
q.push(n->right);
82+
}
83+
cout << endl;
84+
}
85+
}
86+
};
87+
88+
int main() {
89+
BST tree;
90+
tree.insert(4);
91+
tree.insert(2);
92+
tree.insert(6);
93+
tree.insert(1);
94+
tree.insert(3);
95+
tree.insert(5);
96+
tree.insert(7);
97+
98+
cout << "Preorder traversal: ";
99+
tree.preorder(tree.root);
100+
cout << endl;
101+
102+
cout << "Inorder traversal: ";
103+
tree.inorder(tree.root);
104+
cout << endl;
105+
106+
cout << "Postorder traversal: ";
107+
tree.postorder(tree.root);
108+
cout << endl;
109+
110+
tree.levelOrderLToR();
111+
112+
return 0;
113+
}

0 commit comments

Comments
 (0)