先序构建
题目
(牛客网)
思路
前序构建一棵树:就是先构建根,再构建左子树,再构建右子树,在构建左右子树时,它们又会分别去构建各自的左右子树,层层递归下去。
代码实现
#include <stdio.h>
#include <stdlib.h>
typedef struct BTNode
{
struct BTNode*left;
struct BTNode*right;
char data;
}BTNode;
BTNode* CreateBTNode(char* str,int* pi)
{
if(str[*pi]=='#')
{
(*pi)++;
return NULL;
}
else
{
BTNode* root=(BTNode*)malloc(sizeof(BTNode));
root->data=str[*pi];
(*pi)++;
root->left=CreateBTNode(str,pi);
root->right=CreateBTNode(str,pi);
return root;
}
}
void InOrder(BTNode* root)
{
if(root==NULL)
return;
InOrder(root->left);
printf("%c ",root->data);
InOrder(root->right);
}
int main()
{
char str[100];
scanf("%s",str);
int i=0;
BTNode* root=CreateBTNode(str, &i);
InOrder(root);
return 0;
}