For Programmers: Free Programming Magazines  


Home > Archive > PERL Beginners > September 2006 > i need a perl prorgam for this following c program.. can you pl help me out??????









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author i need a perl prorgam for this following c program.. can you pl help me out??????
bommu

2006-09-08, 3:57 am

MY QUS:
Preorder: A B C D F H J M K E G I L N
Inorder: A D J M H K F C I N L G E B
C PROGRAM...........
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef struct
{
int Data;
struct TREE* Left;
struct TREE* Right;
}TREE;

typedef TREE* NODE;
NODE ROOT;
NODE CreateTree(char Pre[],char In[]);
void PreorderTraversal(NODE tmp);
void InorderTraversal(NODE tmp);
void main()
{
char Preorder[20]= "ABCDEFGHI";
char Inorder[20]= "BCAFEGDIH";

//char Preorder[20]="ABDGCEHIF";
//char Inorder[20]="DGBAHEICF";
ROOT = CreateTree(Preorder,Inorder);
printf("Preorder Traversal::");
PreorderTraversal(ROOT);
printf("\n");
printf("Preorder Traversal::");
InorderTraversal(ROOT);
}


NODE CreateTree(char Pre[],char In[])
{
NODE tmp;
char RtmpPre[10],LtmpPre[10],RtmpIn[10],LtmpI
n[10];
int Count =0,tmpCount = 0 ,RootStatus,tmpCount1 = 0;;

if (Pre[0]!=NULL && In[0]!=NULL)
{
tmp = (TREE*)malloc(sizeof(TREE));
tmp->Data = Pre[0];

// Creating Inorder Arrays
while(In[Count]!=Pre[0])
{
LtmpIn[Count] = In[Count];
Count++;
}
RootStatus = Count;
LtmpIn[Count]= '\0';

if(In[Count]!='\0')
{
Count++;
while(In[Count]!='\0')
{
RtmpIn[tmpCount] = In[Count];
Count++ ;
tmpCount ++;
}
}
RtmpIn[tmpCount]= '\0';

Count = 1;
tmpCount = 0;

while(Pre[Count]!='\0')
{
if(Count<=RootStatus)
{
LtmpPre[tmpCount]=Pre[Count];
tmpCount++;
}
else
{
RtmpPre[tmpCount1]=Pre[Count];
tmpCount1++;
}
Count++;
}

LtmpPre[tmpCount] = '\0';
RtmpPre[tmpCount1] = '\0';

tmp->Left = CreateTree(LtmpPre,LtmpIn);
tmp->Right = CreateTree(RtmpPre,RtmpIn);
return tmp;
// Creating Preorder Arrays
}
else
return NULL;

}

void PreorderTraversal(NODE tmp)
{
if(tmp!=NULL)
{
printf("%c",tmp->Data);
PreorderTraversal(tmp->Left);
PreorderTraversal(tmp->Right);
}
}

void InorderTraversal(NODE tmp)
{

if(tmp!=NULL)
{
InorderTraversal(tmp->Left);
printf("%c",tmp->Data);
InorderTraversal(tmp->Right);
}

Philipp Leitner

2006-09-08, 3:57 am


bommu wrote:
> MY QUS:
> Preorder: A B C D F H J M K E G I L N
> Inorder: A D J M H K F C I N L G E B
> C PROGRAM...........
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <ctype.h>
> typedef struct
> {
> int Data;
> struct TREE* Left;
> struct TREE* Right;
> }TREE;
>
> typedef TREE* NODE;
> NODE ROOT;
> NODE CreateTree(char Pre[],char In[]);
> void PreorderTraversal(NODE tmp);
> void InorderTraversal(NODE tmp);
> void main()
> {
> char Preorder[20]= "ABCDEFGHI";
> char Inorder[20]= "BCAFEGDIH";
>
> //char Preorder[20]="ABDGCEHIF";
> //char Inorder[20]="DGBAHEICF";
> ROOT = CreateTree(Preorder,Inorder);
> printf("Preorder Traversal::");
> PreorderTraversal(ROOT);
> printf("\n");
> printf("Preorder Traversal::");
> InorderTraversal(ROOT);
> }
>
>
> NODE CreateTree(char Pre[],char In[])
> {
> NODE tmp;
> char RtmpPre[10],LtmpPre[10],RtmpIn[10],LtmpI
n[10];
> int Count =0,tmpCount = 0 ,RootStatus,tmpCount1 = 0;;
>
> if (Pre[0]!=NULL && In[0]!=NULL)
> {
> tmp = (TREE*)malloc(sizeof(TREE));
> tmp->Data = Pre[0];
>
> // Creating Inorder Arrays
> while(In[Count]!=Pre[0])
> {
> LtmpIn[Count] = In[Count];
> Count++;
> }
> RootStatus = Count;
> LtmpIn[Count]= '\0';
>
> if(In[Count]!='\0')
> {
> Count++;
> while(In[Count]!='\0')
> {
> RtmpIn[tmpCount] = In[Count];
> Count++ ;
> tmpCount ++;
> }
> }
> RtmpIn[tmpCount]= '\0';
>
> Count = 1;
> tmpCount = 0;
>
> while(Pre[Count]!='\0')
> {
> if(Count<=RootStatus)
> {
> LtmpPre[tmpCount]=Pre[Count];
> tmpCount++;
> }
> else
> {
> RtmpPre[tmpCount1]=Pre[Count];
> tmpCount1++;
> }
> Count++;
> }
>
> LtmpPre[tmpCount] = '\0';
> RtmpPre[tmpCount1] = '\0';
>
> tmp->Left = CreateTree(LtmpPre,LtmpIn);
> tmp->Right = CreateTree(RtmpPre,RtmpIn);
> return tmp;
> // Creating Preorder Arrays
> }
> else
> return NULL;
>
> }
>
> void PreorderTraversal(NODE tmp)
> {
> if(tmp!=NULL)
> {
> printf("%c",tmp->Data);
> PreorderTraversal(tmp->Left);
> PreorderTraversal(tmp->Right);
> }
> }
>
> void InorderTraversal(NODE tmp)
> {
>
> if(tmp!=NULL)
> {
> InorderTraversal(tmp->Left);
> printf("%c",tmp->Data);
> InorderTraversal(tmp->Right);
> }


Newsgroups will usually not do your homework for you. Not even if you
end your question with a million '?' chars.

Ask a specific question, and people will help you.

/philipp

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2009 codecomments.com