LeetCode-Construct Binary Tree from Preorder and Inorder Traversal-前序中序恢复二叉树-递归
https://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
跟后序中序类似。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int n,m; vector<int> pr; vector<int> in; TreeNode *Solve(int l1,int r1,int l2,int r2){ if (l1==r1) return NULL; int val=pr[l1]; TreeNode *cur=new TreeNode(val); int p=find(in.begin()+l2,in.begin()+r2,val)-in.begin(); cur->left=Solve(l1+1,l1+1+p-l2,l2,p); cur->right=Solve(l1+1+p-l2,r1,p+1,r2); return cur; } TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { pr=preorder; in=inorder; n=pr.size(); return Solve(0,n,0,n); } };