Day33: [LeetCode中等] 106. 从中序与后序遍历序列构造二叉树
题源:
来自leetcode题库:
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
代码:
dirty code凑合看吧
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int root,Len;
TreeNode* f(vector<int>& inorder, vector<int>& postorder,int left,int right){
if(left>right) return NULL;
int x=postorder[root--];
TreeNode* p=new TreeNode(x);
int i;
for(i=0;i<Len;i++){
if(inorder[i]==x) break;
}
p->right=f(inorder,postorder,i+1,right);
p->left=f(inorder,postorder,left,i-1);
return p;
}
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
Len=inorder.size();
if(Len==0) return NULL;
root=Len-1;
return f(inorder,postorder,0,Len-1);
}
};