结构体:
typedef struct Node{
int value;
struct Node *left;
struct Node *right;
}Node;
int Find(char array[], int size, char v){
for (int i = 0; i < size; i++){
if (array[i] == v){
return i;
}
}
return -1;
}
Node * BuildTree(char preorder[],char inorder[], int size){
if (size == 0){
return NULL;
}
char rootValue = preorder[0];
int leftSize = Find(inorder, size, rootValue);//i的返回值就是左子树的个数
//根
Node *root = (Node *)malloc(sizeof(Node));
root->value = rootValue;
//左子树
root->left = BuildTree(preorder + 1,inorder,leftSize);
//右子树
root->right = BuildTree(preorder + 1 + leftSize, inorder + leftSize + 1, size-1-leftSize);
return root;
}