資料結構實驗之二叉樹二:遍歷二叉樹
阿新 • • 發佈:2018-12-19
Problem Description 已知二叉樹的一個按先序遍歷輸入的字元序列,如abc,de,g,f, (其中,表示空結點)。請建立二叉樹並按中序和後序的方式遍歷該二叉樹。
Input 連續輸入多組資料,每組資料輸入一個長度小於50個字元的字串。
Output 每組輸入資料對應輸出2行: 第1行輸出中序遍歷序列; 第2行輸出後序遍歷序列。
Sample Input abc,de,g,f, Sample Output cbegdfa cgefdba
程式碼:
#include <stdio.h> #include <stdlib.h> typedef struct st { char data; struct st *lchild,*rchild; }Node; char a[101]; int i; Node *createtree() { char ch; Node *root; ch=a[i++]; if(ch==',') { return 0; } else { root=(Node *)malloc(sizeof(Node)); root->data=ch; root->lchild=createtree(); root->rchild=createtree(); } return root; } void zhong(Node *root) { if(root) { zhong(root->lchild); printf("%c",root->data); zhong(root->rchild); } } void hou (Node *root) { if(root) { hou(root->lchild); hou(root->rchild); printf("%c",root->data); } } int main() { Node *root; while(~scanf("%s",a)) { i=0; root=createtree(); zhong(root); printf("\n"); hou(root); printf("\n"); } return 0; }