题目链接:
https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
题目描述:
中序后序建树。
题目分析:
就是先建立好根结点,再根据这个根结点递归的不停的划分左右子树。
代码:
void createBinaryTree(struct TreeNode **root,int *inorder,int *postorder,int len){
for(int i=0;i<len;i++){
if(postorder[len-1]==inorder[i]){
*root=(struct TreeNode*)malloc(sizeof(struct TreeNode*));
(*root)->val=postorder[len-1];
(*root)->left=(*root)->right=NULL;
createBinaryTree(&((*root)->left),inorder,postorder,i);
createBinaryTree(&((*root)->right),inorder+i+1,postorder+i,len-i-1);
break;
}
}
}
struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize) {
struct TreeNode* root=NULL;
createBinaryTree(&root,inorder,postorder,inorderSize);
return root;
}