#include <bits/stdc++.h> using namespace std; class node{ public: int data; node* left; node* right; node(int d) { this->data=d; this->left=NULL; this->right=NULL; } }; node* buildTree(node* root) { cout<<"Enter the data: "<<"\n"; int data; cin>>data; root = new node(data); if(data==-1) return NULL; cout<<"please enter the data for inserting left of "<<data<<endl; root->left=buildTree(root->left); cout<<"please enter the data for inserting right of "<<data<<endl; root->right=buildTree(root->right); return root; } void levelordertraversal(node* root) { queue<node*> q; q.push(root); while(!q.empty()) { node* temp=new node(q.front()); q.pop(); if(temp==NULL) { q.push(NULL); cout<<"\n"; } else { cout<<temp->data<<" "; if(temp->left) q.push(temp->left); if(temp-right) q.push(temp->right); } } } void preorder(node* root) { if(root==NULL) return; cout<<root->data<<" "; preorder(root->left); preorder(root->right); } void Inorder(node* root) { if(root==NULL) return; preorder(root->left); cout<<root->data<<" "; preorder(root->right); } void postorder(node* root) { if(root==NULL) return; preorder(root->left); preorder(root->right); cout<<root->data<<" "; } void buildFromLevelorder(node* root){ queue<node*> q; cout<<"Enter data for root"<<endl; int data; cin>>data; root=new node(data); q.push(root); while(!q.empty()) { node* temp=q.front(); q.pop(); cout<<"Enter left node for: "<<temp->data<<endl; int leftData; cin>>leftData; if(leftData!=-1){ temp->left=new node(leftData); q.push(temp->left); } cout<<"Enter right node for: "<<temp->data<<endl; int rightData; cin>>rightData; if(rightData!=-1) { temp->right=new node(rightData); q.push(temp->right); } } } int main() { node* root=NULL; buildFromLevelorder(root); // root=buildTree(root); // cout<<"Levelordertraversal of tree:- \n"; // levelOrderTravesal(root); // cout<<"print preorder: "<<preorder(root)<<"\n"; // cout<<"print Inorder: "<<Inorder(root)<<"\n"; // cout<<"print preorder: "<<postorderorder(root); return 0; }