剑指offer:重建二叉树
来源:互联网 发布:leetcode python 编辑:程序博客网 时间:2024/06/13 06:30
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
Definition for binary tree struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} };class Solution {public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { int len=vin.size(); if(len<=0)return NULL; if(len==1) { TreeNode* root=new TreeNode(pre[0]); return root; } vector<int> left; vector<int> right; vector<int> preNew=pre; TreeNode *Root=new TreeNode(pre[0]); for(int j=0;j<len;j++) if(vin[j]==pre[0]) { preNew.erase(preNew.begin()); for(int i=0;i<j;i++) left.push_back(vin[i]);//前部分中序遍历的顺序表 for(int i=j+1;i<len;i++) right.push_back(vin[i]);//后部分中序遍历的顺序表 Root->left=reConstructBinaryTree(preNew, left); preNew.erase(preNew.begin(),preNew.begin()+j);//将先序遍历的顺序表截为本次递归的先序顺序 Root->right=reConstructBinaryTree(preNew,right); break; } return Root; }};
0 0
- [剑指offer]重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer--重建二叉树
- 剑指offer---重建二叉树
- 剑指Offer-重建二叉树
- 剑指offer:重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》重建二叉树
- 【剑指Offer】重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer 重建二叉树
- 剑指offer:重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer 重建二叉树
- [剑指offer]重建二叉树
- 剑指offer--重建二叉树
- 《剑指offer》重建二叉树
- [剑指offer]用两个栈实现队列
- 在myeclipse中部署tomcat服务器
- 解决elasticsearch -在Hive external table 无法读取 date 字段
- JAVA—键盘录入数据练习
- DAY7轮播图
- 剑指offer:重建二叉树
- 人脸数据库简要介绍
- MATLAB interp1
- python--annacoda和mongodb的安装步骤
- RecyclerView判断是否滑动到底
- [机器学习]前向逐步回归
- find()和filter()的区别
- 跟小博老师一起学习数据库 ——ACID规则
- leetcode 38