题目
题目链接
点击进入
解题过程
对示例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; }