用先序法輸入樹的結點,輸出它的先中後三種序列
阿新 • • 發佈:2018-11-29
#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); } 在這裡插入程式碼片