#include <malloc.h>
#include <stdio.h>
#include <conio.h>
typedef struct TREE
{
int data;
struct TREE *left;
struct TREE *right;
TREE;
}
int main()
{
int data,depth;
TREE *tree =NULL;
TREE *InsertTree(int data,TREE *p);
TREE *PrintTreeTriangle(TREE *tree, int level);
int TreeDepth(TREE *tree,int *depth,int level);
while(1)
{
printf("\nKey to insert|");
scanf("%d", &data);
if (data==0)
break;
tree =InsertTree(data,tree);
printf("\n Tree Display;\n");
PrintTreeTriangle(tree,1);
depth=0;
TreeDepth(tree,&depth,0);
printf("\nTree Depth =%d\n",depth);
}
return(0);
}
TREE *InsertTree(int data,TREE *p)
}
if(!p)
{
p=(TREE*)malloc(sizeof(TREE));
p->data=data;
p->left=NULL;
p->right=NULL;
return(p);
}
if(data < p->data)
p->left=InsertTree(data,p->left);
else
if(data > p->data)
p->right=InsertTree(data,p->right);
return(p);
}
TREE *PrintTreeTriangle(TREE *tree, int level)
{
int i;
if(tree)
{
PrintTreeTriangle(tree->right,level+1);
printf("\n\n");
for(i=0;i<level;i++)
printf(" ");
printf("%d",tree->data);
PrintTreeTriangle(tree->left,level+1);
}
return(NULL);
}
int TreeDepth(TREE *tree,int *depth,int level)
{
if(tree)
{
if (level>*depth)
*depth=level;
TreeDepth(tree->left,depth,level+1);
TreeDepth(tree->right,depth,level+1);
}
return(0);
}
อธิบายยังไงครับ ขั้นตอนการทำงานมันครับ
#include <stdio.h>
#include <conio.h>
typedef struct TREE
{
int data;
struct TREE *left;
struct TREE *right;
TREE;
}
int main()
{
int data,depth;
TREE *tree =NULL;
TREE *InsertTree(int data,TREE *p);
TREE *PrintTreeTriangle(TREE *tree, int level);
int TreeDepth(TREE *tree,int *depth,int level);
while(1)
{
printf("\nKey to insert|");
scanf("%d", &data);
if (data==0)
break;
tree =InsertTree(data,tree);
printf("\n Tree Display;\n");
PrintTreeTriangle(tree,1);
depth=0;
TreeDepth(tree,&depth,0);
printf("\nTree Depth =%d\n",depth);
}
return(0);
}
TREE *InsertTree(int data,TREE *p)
}
if(!p)
{
p=(TREE*)malloc(sizeof(TREE));
p->data=data;
p->left=NULL;
p->right=NULL;
return(p);
}
if(data < p->data)
p->left=InsertTree(data,p->left);
else
if(data > p->data)
p->right=InsertTree(data,p->right);
return(p);
}
TREE *PrintTreeTriangle(TREE *tree, int level)
{
int i;
if(tree)
{
PrintTreeTriangle(tree->right,level+1);
printf("\n\n");
for(i=0;i<level;i++)
printf(" ");
printf("%d",tree->data);
PrintTreeTriangle(tree->left,level+1);
}
return(NULL);
}
int TreeDepth(TREE *tree,int *depth,int level)
{
if(tree)
{
if (level>*depth)
*depth=level;
TreeDepth(tree->left,depth,level+1);
TreeDepth(tree->right,depth,level+1);
}
return(0);
}