动态创建二叉树
#include<stdio.h>
#include<stdlib.h>
typedef struct BTNode
{
char val;
struct BTNode* left;
struct BTNode* right;
}BTNode;
struct BTNode* BinaryTreeCreate(char* p,int* k)
{
if(p[*k] == '#')
{
(*k)++;
return NULL;
}
BTNode* tmp=(BTNode*)malloc(sizeof(BTNode));
if(tmp == NULL)
{
exit(-1);
}
tmp->val=p[*k];
(*k)++;
tmp->left=BinaryTreeCreate(p,k);
tmp->right=BinaryTreeCreate(p,k);
return tmp;
}
void Inorder(struct BTNode* root)
{
if(root == NULL)
return;
Inorder(root->left);
printf("%c ",root->val);
Inorder(root->right);
}
int main()
{
char c[101];
while(scanf("%s",c) != EOF)
{
int k=0;
BTNode* root=BinaryTreeCreate(c,&k);
Inorder(root);
}
return 0;
}