二叉樹的遍歷,題目描述:
編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據此字符串建立一個二叉樹(以指針方式存儲)。
例如如下的先序遍歷字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。
輸入:
輸入包括1行字符串,長度不超過100。
輸出:
可能有多組測試數據,對於每組數據,
輸出將輸入字符串建立二叉樹後中序遍歷的序列,每個字符後面都有一個空格。
每個輸出結果佔一行。
樣例輸入:
abc##de#g##f###
樣例輸出:
c b e g d f a
C實現
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char array[101];
//二叉樹結點
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//按先序序列創建二叉樹
int CreateBiTree(BiTree &T,int &index,int &n){
if(index == n){
return 0;
}
//按先序次序輸入二叉樹中結點的值(一個字符),‘#’表示空樹
if(array[index] == '#'){
T = NULL;
index++;
}
else{
T = (BiTree)malloc(sizeof(BiTNode));