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

xiaoxiao2021-02-28  105

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; }
转载请注明原文地址: https://www.6miu.com/read-46294.html

最新回复(0)