1.解题思路
该题需要提供两个接口,一个是根据前序构造二叉树的接口,一个是中序遍历接口
2.代码实现
2.1根据前序构造二叉树的接口
因为’#‘就代表空,所以如果遇到’#'时,直接返回即可.
struct BinaryNode* TreeCreate(char *a,int *i)
{
if(a[*i]=='#')
{
(*i)++;
return NULL;
}
struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode));
root->val=a[*i];
(*i)++;
root->left=TreeCreate(a,i);
root->right=TreeCreate(a,i);
return root;
}
2.2中序遍历接口
void Inorder(struct BinaryNode*root)
{
if(root==NULL)
return;
Inorder(root->left);
printf("%c ",root->val);
Inorder(root->right);
}
2.3总体代码
#include <stdio.h>
typedef struct BinaryNode
{
char val;
struct BinaryNode*left;
struct BinaryNode*right;
}BT;
struct BinaryNode* TreeCreate(char *a,int *i)
{
if(a[*i]=='#')
{
(*i)++;
return NULL;
}
struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode));
root->val=a[*i];
(*i)++;
root->left=TreeCreate(a,i);
root->right=TreeCreate(a,i);
return root;
}
void Inorder(struct BinaryNode*root)
{
if(root==NULL)
return;
Inorder(root->left);
printf("%c ",root->val);
Inorder(root->right);
}
int main()
{
char a[101];
gets(a);
int pi=0;
struct BinaryNode*root= TreeCreate(a,&pi);
Inorder(root);
return 0;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!