[剑指offer]重建二叉树

来源:互联网 发布:淘宝外卖怎么加入配送 编辑:程序博客网 时间:2024/06/06 00:03

题目描述

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

class Solution {public:    TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin) {        if (!pre.empty())        {            TreeNode* root = new TreeNode(pre[0]);            vector<int> lsubpre, lsubvin, rsubpre, rsubvin;            int i = 0;            while (i<pre.size()&&vin[i] != pre[0])            {                lsubvin.push_back(vin[i]);                lsubpre.push_back(pre[i + 1]);                i++;            }            for (int j = i + 1; j < pre.size(); j++)            {                rsubpre.push_back(pre[j]);                rsubvin.push_back(vin[j]);            }            root->left = reConstructBinaryTree(lsubpre, lsubvin);            root->right = reConstructBinaryTree(rsubpre, rsubvin);            return root;        }        else return NULL;    }};
0 0