【编程题】根据前序中序重建二叉树

来源:互联网 发布:韩庚 王凯 知乎 编辑:程序博客网 时间:2024/06/07 05:56
  TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {           return  constructBinaryTree(pre,vin);    }        TreeNode* constructBinaryTree(const vector<int> &pre,const vector<int> &vin){        if(pre.size() ==0 || vin.size()==0){            return NULL;        }                     vector<int>  left_pre,right_pre,left_vin,right_vin;         int ii;            for(ii = 0;ii< vin.size();++ii){            if(pre[0] == vin[ii]){                break;            }            left_vin.push_back(vin[ii]);        }        int jj;        for(jj = 1;jj<=ii;jj++){            left_pre.push_back(pre[jj]);        }        for(;jj<pre.size();jj++){            right_pre.push_back(pre[jj]);        }                for(ii++;ii<vin.size();++ii){            right_vin.push_back(vin[ii]);        }                TreeNode *root = new TreeNode(pre[0]);       root->left =  constructBinaryTree(left_pre,left_vin);         root->right =  constructBinaryTree(right_pre,right_vin);               return root;            }    


原创粉丝点击