树的存储结构第二种

#include<bits/stdc++.h>
#define MaxSons 3
typedef struct node
{
 char data;
 struct  node  *sons[MaxSons];
}TSonNode;
int TreeHeight1(TSonNode *t)
{
 TSonNode *p;
 int i,h,maxh=0;
 if(t==NULL) return 0;
 else
 {
  for(i=0;i<MaxSons;i++)
  {
   p=t->sons[i] ;
   if(p!=NULL)
   {
    h=TreeHeight1(p);
    if(maxh<h) maxh=h;
   }
  }
  return (maxh+1);
 }
}
void creatT(TSonNode *&T)
{
   char ch;
   scanf("%c",&ch);
   if(ch=='#') 
   T=NULL;
   else
   {
     T=(TSonNode*)malloc(sizeof(TSonNode));
     T->data=ch;
     for(int i=0;i<MaxSons;i++) 
     {
       creatT(T->sons[i]);
     }
   }
}
void priT(TSonNode *T)
{
 if(T==NULL) 
 ;
 else 
 {
  printf("%c",T->data);
  for(int i=0;i<MaxSons;i++) 
  {
      priT(T->sons[i]);
  }
 } 
}
int main()
{
 TSonNode *T;
 creatT(T);
 priT(T);
 printf("%d",TreeHeight1(T));
 return 0;
}

输入:abe#####c###d###

输出:abecd  3

猜你喜欢

转载自blog.csdn.net/2302_77099705/article/details/130859093