- 根据一棵树的前序遍历与中序遍历构造二叉树。
注意:你可以假设树中没有重复的元素。
struct TreeNode* _buildTree(int* preorder,int* ppindex,int* inorder,int
inbegin,int inend){
if (inbegin>inend)
return NULL;
struct TreeNode* root = (struct TreeNode*)malloc(struct TreeNode);
root->val=preorder[*ppindex];
++(*ppinedx);
if(inbegin==inend)
{
root->left=NULL;
root->right=NULL;
return root;
}
int rootindex=inbegin;
while(inorder[rootindex]!=root->val)
{
++rootindex;
}
root->left= _buildTree(preorder,ppindex,inorder,inbegin,rootindex-1);
root->right= _buildTree(preorder,ppindex,inorder,rootindex+1,inend);
return root;
}
struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder,
int inorderSize) {
if (inorderSize==0)
return NULL;
return _buildTree(preorder,&ppindex,inorder,0,inorderSize-1);
}