算法练习四:重建二叉树

来源:互联网 发布:淘宝官网网站首页 编辑:程序博客网 时间:2024/05/17 22:03
#include<iostream>#include"CommenDefine.h"#include<vector>using namespace std;/*输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回思路:递归*/struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in){if(0 == pre.size())return NULL;vector<int> preleft,preright;vector<int> inleft,inright;int root = pre[0];TreeNode *head = new TreeNode(root);int flag = 0;for(unsigned int i = 0;i < in.size();i++){if(root == in[i]){flag = i;break;}}for(unsigned int i = 0;i < flag;i++){inleft.push_back(in[i]);preleft.push_back(pre[i+1]);}for(unsigned int i = flag+1;i < in.size();i++){inright.push_back(in[i]);preright.push_back(pre[i]);}head->left = reConstructBinaryTree(preleft,inleft);head->right = reConstructBinaryTree(preright,inright);return head;}

0 0
原创粉丝点击