-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathcreation.cpp
116 lines (100 loc) · 2.31 KB
/
creation.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include<bits/stdc++.h>
using namespace std;
class Treenode{
public:
int data;
Treenode* left;
Treenode* right;
Treenode(int data){
this->data=data;
this->left=NULL;
this->right=NULL;
}
};
//creating tree by recursion
Treenode* createTree(Treenode* root)
{
int d;
cout<<"enter data"<<endl;
cin>>d;
root=new Treenode(d);
if(d==-1) return NULL;
cout<<"enter data for left"<<endl;
root->left=createTree(root->left);
cout<<"enter data for right"<<endl;
root->right=createTree(root->right);
return root;
}
//creating tree by level order input
void createbylevelorder(Treenode* &root)
{
cout<<"enter data for root node"<<endl;
int d;
cin>>d;
if(d==-1) {
root=NULL;
return;
}
root=new Treenode(d);
queue<Treenode*> q;
q.push(root);
while(!q.empty())
{
Treenode* front=q.front();
q.pop();
cout<<"enter data for left of"<<front->data<<endl;
int left,right;
cin>>left;
if(left!=-1){
front->left=new Treenode(left);
q.push(front->left);
}
cout<<"enter data for right of"<<front->data<<endl;
cin>>right;
if(right!=-1){
front->right=new Treenode(right);
q.push(front->right);
}
}
}
void levelordertraversal(Treenode* root)
{
queue<Treenode*> q;
q.push(root);
q.push(NULL);
while(!q.empty())
{
Treenode* root=q.front();
q.pop();
if(root==NULL){
cout<<endl;
if(!q.empty()) q.push(NULL);
}
else{
cout<<root->data;
if(root->left) q.push(root->left);
if(root->right) q.push(root->right);
}
}
}
int main()
{
Treenode* root=NULL;
/*
root=createTree(root);
cout<<"level order traversal is:"<<endl;
levelordertraversal(root);
cout<<"inordertraversal traversal is:"<<endl;
inordertraversal(root);
cout<<endl;
cout<<"preorder traversal is:"<<endl;
preordertraversal(root);
cout<<endl;
cout<<"postorder traversal is"<<endl;
postordertraversal(root);
*/
createbylevelorder(root);
cout<<"levelordertraversal is"<<endl;
levelordertraversal(root);
}
//1 2 3 4 5 6 7 -1 -1 -1 -1 -1 -1 -1 -1