重建二叉树
题目:重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路 前序遍历:中左右 中序遍历:左中右 根据pre[0]=vin[i]找出根(mid)的位置,递归左右子树 #include<iostream> #include<vector> #include<queue> #include<stack> using namespace std; struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x), left(NULL), right(NULL){ } }; class Solution{ public: // 思路:递归左右子树,找出左右的pre和vin TreeNode *reConstructBinaryTree(vector<int> pre, vector<int> vin){ int mid, size=pre.size(); if(size==0) return NULL; TreeNode *root = new TreeNode(pre[0]); //