1. 由前序和中序构造二叉树
#include <stdio.h>
#include <stdlib.h>
/**
* Definition for a binary tree node.*/
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* doBuildTree(int* preorder, int preorderSize, int* inorder, int inorderSize, int preIndexStart,int preIndexEnd, int inIndexStart, int inIndexEnd) {
printf(" preIndexStart=%d, inIndexStart=%d,inIndexEnd=%d ",preIndexStart,inIndexStart,inIndexEnd);
if(inIndexStart < 0 || inIndexEnd >= inorderSize || inIndexEnd < inIndexStart ||preIndexEnd >= preorderSize) return NULL;
struct TreeNode* root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->val = preorder[preIndexStart];
printf(" root=%d",root->val);
int mid = -1;
int i=inIndexStart;
while(i<=inIndexEnd){
if(preorder[preIndexS