剑指Offer编程练习__重建二叉树
来源:互联网 发布:java json双引号转义 编辑:程序博客网 时间:2024/05/22 04:57
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
/** * 题目描述 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 * 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如 * 输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1, * 5,3,8,6},则重建二叉树并返回。 */#include <iostream>#include <vector>using namespace std;// Definition for binary treestruct 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()) return nullptr; TreeNode *root = new TreeNode(pre[0]); for (int i = 0, len = vin.size(); i < len; i++) { if (pre[0] == vin[i]) { root->left = reConstructBinaryTree( vector<int>(pre.begin() + 1, pre.begin() + 1 + i), vector<int>(vin.begin(), vin.begin() + i)); root->right = reConstructBinaryTree( vector<int>(pre.begin() + 1 + i, pre.end()), vector<int>(vin.begin() + i + 1, vin.end())); break; } } return root; }};int main() {TreeNode *root = Solution().reConstructBinaryTree(vector<int>{1,2,4,7,3,5,6,8}, vector<int>{4,7,2,1,5,3,8,6});return 0;}
阅读全文
0 0
- 剑指Offer编程练习__重建二叉树
- 剑指offer-算法题练习:part4 重建二叉树
- [剑指offer]重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer--重建二叉树
- 剑指offer---重建二叉树
- 剑指Offer-重建二叉树
- 剑指offer:重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》重建二叉树
- 【剑指Offer】重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer 重建二叉树
- 剑指offer:重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer 重建二叉树
- [剑指offer]重建二叉树
- 关于thinkphp5.0 rc4.0扩展类库自动与手动加载的问题
- 数据库事务的复习笔记
- Java正则表达式与IO流简单练习
- 不要只怀揣梦想,而是要努力实现梦想!
- 690-Employee Importance
- 剑指Offer编程练习__重建二叉树
- 用户及组的相关命令操作
- SpringMVC学习系列(11) 之 表单标签
- HDU 1814 Peaceful Commission (2-sat暴力染色)
- DES算法描述及C++实现
- 长假归来是深秋
- SQL Server 2017 补丁体系结构MSM
- Hadoop根据SecondaryNameNode恢复NameNode
- POJ3295 Tautology