题目
题目链接
:点击进入
解题过程
对示例1中的样例即:abc##de#g##f###
进行先序遍历建立一个二叉树,建立完成之后就是这样的,如下图:
然后再将这颗树进行中序遍历进行最后的结果输出。
无非就是用递归嘛
整个题目的思路挺清晰的:先先序遍历建立一棵二叉树,然后再对这棵二叉树进行中序遍历输出其值。
解题代码
#include<stdio.h>
struct TreeNode
{
struct TreeNode* left;
struct TreeNode* right;
char val;
};
//先序建立二叉树
struct TreeNode* CreateTree(char* a,int* pi)
{
if(a[*pi]=='#')
{
(*pi)++;
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val=a[(*pi)++];
root->left=CreateTree(a, pi);
root->right=CreateTree(a, pi);
return root;
}
//中序输出结果
void InOrder(struct TreeNode* root)
{
if(root==NULL)
{
return;
}
InOrder(root->left);
printf("%c ",root->val);
InOrder(root->right);
}
int main()
{
char a[100];
scanf("%s",a);
int i=0;
struct TreeNode* root=CreateTree(a,&i);
InOrder(root);
return 0;
}