剑指offer-重建二叉树
来源:互联网 发布:vip解析 采集源码 编辑:程序博客网 时间:2024/04/28 20:10
问题
题目:[重建二叉树]
思路
老问题了,递归建立。
基本思路是,根据先序中的第一个节点。到中序序列去进行划分左右子树。
然后递归建立左右子树即可。
代码
/** * 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) { return create( pre, 0, pre.size()-1, vin, 0, vin.size()-1 ); }private: TreeNode* create(const vector<int>& pre, int s1, int t1, const vector<int>& in, int s2, int t2) { if(s1 > t1) return NULL; TreeNode* root = new TreeNode(pre[s1]); int mid = 0; for(mid = s2; mid <= t2; ++mid){ if(in[mid] == pre[s1]) break; } int left_len = mid-s2; root->left = create( pre, s1+1, s1 + left_len, in, s2, mid-1 ); root->right = create(pre, s1+left_len+1, t1, in, mid+1, t2); return root; }};
0 0
- [剑指offer]重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer--重建二叉树
- 剑指offer---重建二叉树
- 剑指Offer-重建二叉树
- 剑指offer:重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》重建二叉树
- 【剑指Offer】重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer 重建二叉树
- 剑指offer:重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer 重建二叉树
- [剑指offer]重建二叉树
- 剑指offer--重建二叉树
- 《剑指offer》重建二叉树
- ConcurrentHashMap源码
- 必会算法:冒泡排序、快排、归并排序、折半查找、大根堆(Java版)
- leetcode [Implement strStr()]
- Asp.Net MVC学习总结(二)——控制器与动作(Controller And Action)
- ssim算法原理
- 剑指offer-重建二叉树
- CF
- ini文件总结
- </2016>Summary<2017>
- linux-bash特性
- 取消事件的默认行为
- 唯一ID
- 【CQOI2014】排序机械臂
- 山科的前辈的总结,好多资料专题和建议