Computer Science, asked by mishrasumit1165, 1 year ago

Write an algorithm and program that accepts a Tree as input and converts it into a Binary Tree. Binary Tree should be printed to standard output.

Answers

Answered by Anonymous
6

Answer:

Code\:

Explanation:

#include <stdio.h>

#include <stdlib.h>

struct tnode

{

int data;

struct tnode *lchild, *rchild;

};

struct tnode *insert(struct tnode *p,int val)

{

struct tnode *temp1,*temp2;

if(p == NULL)

{

p = (struct tnode *) malloc(sizeof(struct tnode));

/* insert the new node as root node*/

if(p == NULL)

{

printf(“Cannot allocate\n”);

exit(0);

}

p->data = val;

p->lchild=p->rchild=NULL;

}

else

{

temp1 = p;

/* traverse the tree to get a pointer to that node

whose child will be the newly created node*/

while(temp1 != NULL)

{

temp2 = temp1;

if( temp1 ->data > val)

temp1 = temp1->lchild;

else

temp1 = temp1->rchild;

}

if( temp2->data > val)

{

temp2->lchild = (struct tnode*)malloc(sizeof(struct tnode));

/*inserts the newly created node as left child*/

temp2 = temp2->lchild;

if(temp2 == NULL)

{

printf(“Cannot allocate\n”);

exit(0);

}

temp2->data = val;

temp2->lchild=temp2->rchild = NULL;

}

else

{

temp2->rchild = (struct tnode*)malloc(sizeof(struct tnode));

/*inserts the newly created node as left child*/

temp2 = temp2->rchild;

if(temp2 == NULL)

{

printf(“Cannot allocate\n”);

exit(0);

}

temp2->data = val;

temp2->lchild=temp2->rchild = NULL;

}

}

return(p);

}

/* a function to binary tree in preorder */

void preorder(struct tnode *p)

{

if(p != NULL)

{

printf(“%d\t”,p->data);

preorder(p->lchild);

preorder(p->rchild);

}

}

/* a function to binary tree in inorder */

void inorder(struct tnode *p)

{

if(p != NULL)

{

inorder(p->lchild);

printf(“%d\t”,p->data);

inorder(p->rchild);

}

}

/* a function to binary tree in postorder */

void postorder(struct tnode *p)

{

if(p != NULL)

{

postorder(p->lchild);

postorder(p->rchild);

printf(“%d\t”,p->data);

}

}

void main()

{

struct tnode *root = NULL;

int n,x;

clrscr();

printf(“\nEnter the number of nodes\n”);

scanf(“%d”,&n);

while(n!=0)

{

printf(“Enter the data value\n”);

scanf(“%d”,&x);

root = insert(root,x);

n–;

}

printf(“\n**THIS TREE IS BINARY TREE**\n”);

printf(“\nPREORDER OF TREE : \n”);

preorder(root);

printf(“\nINORDER OF TREE : \n”);

inorder(root);

printf(“\nPOSTORDER OF TREE : \n”);

postorder(root);

getch();

}

Similar questions