剑指offer面试题[6]-重建二叉树
来源:互联网 发布:海诺网络 编辑:程序博客网 时间:2024/05/18 02:40
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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) { if(pre.empty()||vin.empty()) return NULL; TreeNode* root=reConstructCore(pre,vin); return root; } TreeNode* reConstructCore(vector<int> pre,vector<int> vin) { if(pre.empty()) return NULL; vector<int> preLeft,preRight,vinLeft,vinRight; int rootValue=pre[0]; TreeNode* root=new TreeNode(rootValue); int len=pre.size(); int index=0; for(int i=0;i<len;i++) { if(vin[i]==rootValue) { index=i; break; } } for(int j=0;j<index;j++) { preLeft.push_back(pre[j+1]); vinLeft.push_back(vin[j]); } for(int j=index+1;j<len;j++) { preRight.push_back(pre[j]); vinRight.push_back(vin[j]); } root->left=reConstructCore(preLeft,vinLeft); root->right=reConstructCore(preRight,vinRight); return root; }};
阅读全文
1 0
- 《剑指Offer》面试题-重建二叉树
- 剑指offer--面试题6: 重建二叉树(树)
- 剑指offer-->面试题6 重建二叉树
- 【剑指offer】面试题6:重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 剑指offer 面试题6 重建二叉树
- 剑指Offer:面试题6 重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 《剑指offer》面试题6重建二叉树
- 剑指offer面试题6--重建二叉树
- 理解《剑指Offer》之面试题6 重建二叉树
- 剑指offer 面试题6 重建二叉树
- 剑指offer面试题6 重建二叉树(c)
- 剑指offer面试题6 重建二叉树(java)
- 《剑指Offer》面试题6:重建二叉树
- 剑指offer--面试题6:重建二叉树--Java实现
- 【剑指Offer学习】【面试题6 :重建二叉树】
- 《剑指Offer》学习笔记--面试题6:重建二叉树
- 文本读写
- init
- JavaWeb学习之请求转发和重定向
- POJ题目分类
- js 笔记
- 剑指offer面试题[6]-重建二叉树
- pthread_cond_timewait
- 平安科技面试总结
- Java:使用Iterator迭代器遍历集合数据
- VS注释与取消注释快捷键
- js 笔记
- C 可变参数
- 2017.8.21考试
- Redis