Skip to content

Commit 96d17f3

Browse files
committed
Binary trees
1 parent 1d978fb commit 96d17f3

8 files changed

+781
-293
lines changed
Lines changed: 151 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -1,151 +1,151 @@
1-
#include<bits/stdc++.h>
2-
using namespace std;
3-
4-
// Definition for a binary tree node
5-
class TreeNode {
6-
public:
7-
int data;
8-
TreeNode* left;
9-
TreeNode* right;
10-
11-
// Constructor to initialize a tree node
12-
TreeNode(int d) {
13-
data = d;
14-
left = right = nullptr;
15-
}
16-
};
17-
18-
class Solution{
19-
public:
20-
// In-order Traversal (Left, Root, Right)
21-
void inOrderTraversal(TreeNode* root) {
22-
if (root == nullptr) return;
23-
inOrderTraversal(root->left);
24-
cout << root->data << " ";
25-
inOrderTraversal(root->right);
26-
}
27-
28-
// Pre-order Traversal (Root, Left, Right)
29-
void preOrderTraversal(TreeNode* root) {
30-
if (root == nullptr) return;
31-
cout << root->data << " ";
32-
preOrderTraversal(root->left);
33-
preOrderTraversal(root->right);
34-
}
35-
36-
// Post-order Traversal (Left, Right, Root)
37-
void postOrderTraversal(TreeNode* root) {
38-
if (root == nullptr) return;
39-
postOrderTraversal(root->left);
40-
postOrderTraversal(root->right);
41-
cout << root->data << " ";
42-
}
43-
};
44-
45-
/*
46-
//recursive code
47-
class Solution {
48-
public:
49-
vector<int> inorderTraversal(TreeNode* root) {
50-
vector<int>ans;
51-
stack<TreeNode*>st;
52-
TreeNode* node = root;
53-
54-
while(true){
55-
if(node != nullptr){
56-
st.push(node);
57-
node = node-> left;
58-
}
59-
else{
60-
if(st.empty()) break;
61-
node = st.top();
62-
st.pop();
63-
ans.push_back(node -> val);
64-
node = node -> right;
65-
}
66-
}
67-
return ans;
68-
}
69-
70-
vector<int> preorderTraversal(TreeNode* root) {
71-
vector<int>ans;
72-
if(root == nullptr) return ans;
73-
stack<TreeNode *>st;
74-
75-
st.push(root);
76-
77-
while(!st.empty()){
78-
TreeNode* node = st.top();
79-
st.pop();
80-
81-
ans.push_back(node -> val);
82-
83-
if(node -> right != nullptr)
84-
st.push(node-> right);
85-
86-
if(node -> left != nullptr)
87-
st.push(node -> left);
88-
89-
}
90-
return ans;
91-
}
92-
93-
vector<int> postorderTraversal(TreeNode* root) {
94-
vector<int> ans;
95-
stack<TreeNode*> st;
96-
TreeNode* curr = root;
97-
98-
while (curr || !st.empty()) {
99-
if (curr) {
100-
st.push(curr);
101-
curr = curr->left;
102-
} else {
103-
TreeNode* temp = st.top()->right;
104-
if (!temp) {
105-
temp = st.top();
106-
st.pop();
107-
ans.push_back(temp->val);
108-
109-
while (!st.empty() && temp == st.top()->right) {
110-
temp = st.top();
111-
st.pop();
112-
ans.push_back(temp->val);
113-
}
114-
} else {
115-
curr = temp;
116-
}
117-
}
118-
}
119-
return ans;
120-
}
121-
}
122-
*/
123-
int main() {
124-
// Create individual nodes
125-
TreeNode* root = new TreeNode(1);
126-
root->left = new TreeNode(2);
127-
root->right = new TreeNode(3);
128-
root->left->left = new TreeNode(4);
129-
root->left->right = new TreeNode(5);
130-
root->right->left = new TreeNode(6);
131-
root->right->right = new TreeNode(7);
132-
133-
Solution sol;
134-
135-
// Perform in-order traversal
136-
cout << "In-order Traversal is...";
137-
sol.inOrderTraversal(root);
138-
cout << endl;
139-
140-
// Perform pre-order traversal
141-
cout << "Pre-order Traversal is...";
142-
sol.preOrderTraversal(root);
143-
cout << endl;
144-
145-
// Perform post-order traversal
146-
cout << "Post-order Traversal is...";
147-
sol.postOrderTraversal(root);
148-
cout << endl;
149-
150-
return 0;
151-
}
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
// Definition for a binary tree node
5+
class TreeNode {
6+
public:
7+
int data;
8+
TreeNode* left;
9+
TreeNode* right;
10+
11+
// Constructor to initialize a tree node
12+
TreeNode(int d) {
13+
data = d;
14+
left = right = nullptr;
15+
}
16+
};
17+
18+
class Solution{
19+
public:
20+
// In-order Traversal (Left, Root, Right)
21+
void inOrderTraversal(TreeNode* root) {
22+
if (root == nullptr) return;
23+
inOrderTraversal(root->left);
24+
cout << root->data << " ";
25+
inOrderTraversal(root->right);
26+
}
27+
28+
// Pre-order Traversal (Root, Left, Right)
29+
void preOrderTraversal(TreeNode* root) {
30+
if (root == nullptr) return;
31+
cout << root->data << " ";
32+
preOrderTraversal(root->left);
33+
preOrderTraversal(root->right);
34+
}
35+
36+
// Post-order Traversal (Left, Right, Root)
37+
void postOrderTraversal(TreeNode* root) {
38+
if (root == nullptr) return;
39+
postOrderTraversal(root->left);
40+
postOrderTraversal(root->right);
41+
cout << root->data << " ";
42+
}
43+
};
44+
45+
/*
46+
//iterative code
47+
class Solution {
48+
public:
49+
vector<int> inorderTraversal(TreeNode* root) {
50+
vector<int>ans;
51+
stack<TreeNode*>st;
52+
TreeNode* node = root;
53+
54+
while(true){
55+
if(node != nullptr){
56+
st.push(node);
57+
node = node-> left;
58+
}
59+
else{
60+
if(st.empty()) break;
61+
node = st.top();
62+
st.pop();
63+
ans.push_back(node -> val);
64+
node = node -> right;
65+
}
66+
}
67+
return ans;
68+
}
69+
70+
vector<int> preorderTraversal(TreeNode* root) {
71+
vector<int>ans;
72+
if(root == nullptr) return ans;
73+
stack<TreeNode *>st;
74+
75+
st.push(root);
76+
77+
while(!st.empty()){
78+
TreeNode* node = st.top();
79+
st.pop();
80+
81+
ans.push_back(node -> val);
82+
83+
if(node -> right != nullptr)
84+
st.push(node-> right);
85+
86+
if(node -> left != nullptr)
87+
st.push(node -> left);
88+
89+
}
90+
return ans;
91+
}
92+
93+
vector<int> postorderTraversal(TreeNode* root) {
94+
vector<int> ans;
95+
stack<TreeNode*> st;
96+
TreeNode* curr = root;
97+
98+
while (curr || !st.empty()) {
99+
if (curr) {
100+
st.push(curr);
101+
curr = curr->left;
102+
} else {
103+
TreeNode* temp = st.top()->right;
104+
if (!temp) {
105+
temp = st.top();
106+
st.pop();
107+
ans.push_back(temp->val);
108+
109+
while (!st.empty() && temp == st.top()->right) {
110+
temp = st.top();
111+
st.pop();
112+
ans.push_back(temp->val);
113+
}
114+
} else {
115+
curr = temp;
116+
}
117+
}
118+
}
119+
return ans;
120+
}
121+
}
122+
*/
123+
int main() {
124+
// Create individual nodes
125+
TreeNode* root = new TreeNode(1);
126+
root->left = new TreeNode(2);
127+
root->right = new TreeNode(3);
128+
root->left->left = new TreeNode(4);
129+
root->left->right = new TreeNode(5);
130+
root->right->left = new TreeNode(6);
131+
root->right->right = new TreeNode(7);
132+
133+
Solution sol;
134+
135+
// Perform in-order traversal
136+
cout << "In-order Traversal is...";
137+
sol.inOrderTraversal(root);
138+
cout << endl;
139+
140+
// Perform pre-order traversal
141+
cout << "Pre-order Traversal is...";
142+
sol.preOrderTraversal(root);
143+
cout << endl;
144+
145+
// Perform post-order traversal
146+
cout << "Post-order Traversal is...";
147+
sol.postOrderTraversal(root);
148+
cout << endl;
149+
150+
return 0;
151+
}

0 commit comments

Comments
 (0)