Suggest some ways to improve it(since I have made root public and want to make it Private).This is code for Inorder, Preorder, Postorder Traversal of a Tree.
#include<iostream.h> #include<conio.h> struct Node { int data; Node *left; Node *right; }; class Tree { private: Node *p; public: Node *root; Tree() { root=NULL; } void Insertion(); void Traversal(); protected: void SearchPos(Node *); void Inorder_Traversal(Node *); void Preorder_Traversal(Node *); void Postorder_Traversal(Node *); }; void Tree::Insertion() { p=new Node; p->left=p->right=NULL; if(root==NULL) { cout<<"Enter Root Value to be inserted:"; cin>>p->data; root=p; } else { cout<<"\nEnter Value to be inserted:"; cin>>p->data; SearchPos(root); } } void Tree::SearchPos(Node *tmp) { if(p->data<tmp->data && tmp->left==NULL) { tmp->left=p; return; } else if(p->data>tmp->data && tmp->right==NULL) { tmp->right=p; return; } else if(p->data<tmp->data && tmp->left!=NULL) { SearchPos(tmp->left); } else if(p->data>tmp->data && tmp->right!=NULL) { SearchPos(tmp->right); } } void Tree::Traversal() { cout<<"\nInorder Traversal:"; Inorder_Traversal(root); cout<<"\nPreorder Traversal:"; Preorder_Traversal(root); cout<<"\nPostorder Traversal:"; Postorder_Traversal(root); } void Tree::Inorder_Traversal(Node *tmp) { if(tmp->left==NULL && tmp->right==NULL) { cout<<tmp->data<<" "; return; } else if(tmp->left!=NULL) { Inorder_Traversal(tmp->left); } cout<<tmp->data<<" "; if(tmp->right!=NULL) { Inorder_Traversal(tmp->right); } } void Tree::Preorder_Traversal(Node *tmp) { if(tmp->left==NULL && tmp->right==NULL) { cout<<tmp->data<<" "; return; } else if(tmp->left!=NULL) { cout<<tmp->data<<" "; Preorder_Traversal(tmp->left); } if(tmp->right!=NULL) { Preorder_Traversal(tmp->right); } } void Tree::Postorder_Traversal(Node *tmp) { if(tmp->left==NULL && tmp->right==NULL) { cout<<tmp->data<<" "; return; } else if(tmp->left!=NULL) { Postorder_Traversal(tmp->left); } if(tmp->right!=NULL) { Postorder_Traversal(tmp->right); cout<<tmp->data<<" "; } } void main() { clrscr(); char choice; Tree t; do { t.Insertion(); cout<<"\nMore to Insert???Enter(y/n):"; cin>>choice; }while(choice=='y'||choice=='Y'); t.Traversal(); getch(); }