题解 | #重建二叉树#
重建二叉树
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
//c++ 递归 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ #include <cstddef> #include <vector> class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { int m=pre.size(); int n=vin.size(); if (m==0||n==0) { return NULL; } TreeNode* root=new TreeNode(pre[0]); for(int i=0;i<n;i++){ if (pre[0]==vin[i]) { vector<int> preleft(pre.begin()+1,pre.begin()+i+1); vector<int> vinleft(vin.begin(),vin.begin()+i); root->left=reConstructBinaryTree(preleft, vinleft); vector<int> preright(pre.begin()+i+1,pre.end()); vector<int> vinright(vin.begin()+i+1,vin.end()); root->right=reConstructBinaryTree(preright, vinright); break; } } return root; } };