1. 程式人生 > >用先序法輸入樹的結點,輸出它的先中後三種序列

用先序法輸入樹的結點,輸出它的先中後三種序列

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{char a;
struct node *zuo,*you;
 }node,*link;//結點 
void jianli(link *p)
{char c;
c=getchar();
if(c==' ')
*p=0;
else
{*p=(node*)malloc(sizeof(node));
(*p)->a=c;
jianli(&(*p)->zuo);
jianli(&(*p)->you);
}
 } //建樹
void xianshuchu(node *p)
{if(p==0)
return;
else
{printf("%c",p->a);
xianshuchu(p->zuo);
xianshuchu(p->you);
}
 } //先序輸出
 void zhongshuchu(node *p)
 {if(p==0)
return;
else
{zhongshuchu(p->zuo);
printf("%c",p->a);
zhongshuchu(p->you);
  } }//中序輸出
  void houshuchu(node *p)
 {if(p==0)
return;
else
{houshuchu(p->zuo);
houshuchu(p->you);
printf("%c",p->a);
  } }//後序輸出
  int main()
  {link p;
  printf("請輸入樹的節點並以空格為空節點輸入:");
  jianli(&p);
  printf("輸出結果:先序序列為:");
  xianshuchu(p);
  printf("\n中序序列為:");
  zhongshuchu(p);
  printf("\n後序序列為:"); 
  houshuchu(p);
   } 
在這裡插入程式碼片

在這裡插入圖片描述