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