题解:#重组二叉树#
题目链接:https://www.nowcoder.com/share/jump/5876869471694399526239
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param preOrder int整型vector
* @param vinOrder int整型vector
* @return TreeNode类
*/
TreeNode* reConstructBinaryTree(vector<int>& preOrder, vector<int>& vinOrder) {
// write code here
if(preOrder.size()==0||vinOrder.size()==0)
{
return nullptr;
}
int rootval = preOrder[0];
TreeNode* root = new TreeNode(rootval);
int index=0;
for(;index<vinOrder.size();index++)
{
if(vinOrder[index]==rootval)
{
break;
}
}
vector<int> vinOrderLeft(vinOrder.begin(),vinOrder.begin()+index);
vector<int> vinOrderRight(vinOrder.begin()+index+1,vinOrder.end());
vector<int> preOrderLeft(preOrder.begin()+1,preOrder.begin()+1+index);
vector<int> preOrderRight(preOrder.begin()+index+1,preOrder.end());
//递归
root->left=reConstructBinaryTree(preOrderLeft, vinOrderLeft);
root->right=reConstructBinaryTree(preOrderRight, vinOrderRight);
return root;
}
};
#剑指offer#剑指offer刷题 文章被收录于专栏
坚持!努力!学习

查看17道真题和解析