题目描述
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
输入描述:
输入包括1行字符串,长度不超过100。 输出描述:
可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。 示例1
输入
abc##de#g##f### 输出
c b e g d f a #include<bits/stdc++.h> using namespace std; typedef struct node{ char c; struct node *lchild,*rchild; }TNode,*Tree; string str; int x; void creat(Tree &T) { if(str[x]=='#') { T=NULL; x++; return; } T=(TNode *)malloc(sizeof(TNode)); T->c=str[x]; x++; creat(T->lchild); creat(T->rchild); return; } void print(Tree T)//输出打印中序遍历的结果 { if(T==NULL) { return; } print(T->lchild); printf("%c ",T->c); print(T->rchild); return; } int main() { getline(cin,str); x=0; Tree T;//建立一颗空树 creat(T); print(T); return 0; } /* abc##de#g##f### */
转载请标明出处:二叉树的遍历
文章来源: https://blog.csdn.net/amf12345/article/details/88863233