重建二叉树

来源:互联网 发布:管家婆软件的优缺点 编辑:程序博客网 时间:2024/06/05 17:12

题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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)     {        int size_n = vin.size();        if(size_n==0)            return NULL;        TreeNode* head=new TreeNode(pre[0]);        vector<int> pre_left,pre_right,vin_left,vin_right;        int i=0;        while(pre[0]!=vin[i])            ++i;        for(int j=0;j<size_n;++j)        {            if(j<i)            {                 pre_left.push_back(pre[j+1]);                vin_left.push_back(vin[j]);                }            else if(j>i)            {                pre_right.push_back(pre[j]);                vin_right.push_back(vin[j]);            }        }        head->left=reConstructBinaryTree(pre_left,vin_left);        head->right=reConstructBinaryTree(pre_right,vin_right);        return head;           }};

学习了二叉树,要回头复习的

0 0
原创粉丝点击