This code implements a binary tree for integers. How can I improve it?
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
///////////////////////////////
struct node{
int data;
struct node *left;
struct node *right;
};
///////////////////////////////
struct node *newnode(int value)
{
struct node *temp=(struct node *)malloc(sizeof(struct node));
temp->data=value;
temp->left=NULL;
temp->right=NULL;
return (temp);
}
void inorder_rec(struct node *temp)
{
if(temp->left!=NULL)
inorder_rec(temp->left);
printf("%d",temp->data);
if(temp->right!=NULL)
inorder_rec(temp->right);
}
void preorder_rec(struct node *temp)
{
printf("%d",temp->data);
if(temp->left!=NULL)
preorder_rec(temp->left);
if(temp->right!=NULL)
preorder_rec(temp->right);
}
void postorder_rec(struct node *temp)
{
if(temp->left!=NULL)
postorder_rec(temp->left);
if(temp->right!=NULL)
postorder_rec(temp->right);
printf("%d",temp->data);
}
////////////////////////////////
int main()
{
int option;
option=1;
struct node *root=newnode(1);
root->left=newnode(2);
root->right=newnode(3);
root->left->left=newnode(4);
root->left->right=newnode(5);
root->right->left=newnode(6);
root->right->right=newnode(7);
printf("Press:\n1 for inorder\n2 for preorder\n3 for postorder\n0 toQUIT!");
while(option)
{
printf("\nenter your option=");
scanf("%d",&option);
switch(option)
{
case 1:
inorder_rec(root);
break;
case 2:
preorder_rec(root);
break;
case 3:
postorder_rec(root);
break;
/* case 4:
inorder_non_rec(root);
break;
case 5:
preorder_non_rec(root);
break;
case 6:
postorder_non_rec(root);
break;*/
}
}
}