劍指offer——重建二叉樹
注意遞迴邊界即可,寫build函式記得把vector的引用傳進去更快
如果想看具體細節的可以看pat那裡的
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
#include<unordered_map>
class Solution {
public:
unordered_map<int,int> ma;
//前中構建二叉樹
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
for(int i = 0; i < vin.size(); i++){
ma[vin[i]] = i;//第i位對應的值就是i,通過值找下標
}
TreeNode* node = build(0,pre.size()-1,0,vin.size()-1,pre,vin);
return node;
}
TreeNode* build(int preL, int preR, int inL, int inR, const vector<int>& pre, const vector<int>& in){
if(preL > preR) return nullptr;
TreeNode* node = new TreeNode(pre[preL]);
node->left = node->right = nullptr;
int subLeftTree = ma[pre[preL]] - inL;
node->left = build(preL+1, preL + subLeftTree, inL, inL+subLeftTree-1,pre,in);
node->right = build(preL + subLeftTree +1, preR, inL+subLeftTree+1, inR,pre,in);
return node;
}
};
相關文章
- 劍指offer(四)重建二叉樹二叉樹
- 劍指 Offer 07. 重建二叉樹二叉樹
- 劍指offer(java實現)第4題“重建二叉樹”-牛客網Java二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- 劍指Offer-40-二叉樹的深度二叉樹
- [劍指offer] 把二叉樹列印成多行二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 【劍指offer】27. 二叉樹的映象二叉樹
- 劍指offer——二叉樹的映象C++二叉樹C++
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 力扣 - 劍指 Offer 27. 二叉樹的映象力扣二叉樹
- 劍指offer:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。二叉樹
- 劍指offer--把二叉樹列印成多行(C++)二叉樹C++
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 《劍指offer》之在完全二叉樹中新增子節點二叉樹
- 劍指offer——從上往下列印二叉樹C++二叉樹C++
- [劍指offer] 二叉搜尋樹的後序遍歷序列
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹
- 劍指 Offer 32 - III. 從上到下列印二叉樹 III二叉樹
- LeetCode 劍指offer——從上到下列印二叉樹 II、從上到下列印二叉樹 IIILeetCode二叉樹
- 劍指 Offer 33. 二叉搜尋樹的後序遍歷序列
- 劍指 Offer 32 - I. 從上到下列印二叉樹(java解題)二叉樹Java
- 劍指 Offer 34. 二叉樹中和為某一值的路徑二叉樹
- 劍指OFFER
- 重建二叉樹二叉樹
- 劍指 Offer 54. 二叉搜尋樹的第k大節點 mark
- (python版)《劍指Offer》JZ57:二叉樹的下一個結點Python二叉樹
- 劍指offer-17:樹的子結構
- PHPer面試必看:分門別類帶你擼《劍指Offer》之二叉樹PHP面試二叉樹
- 劍指offer刷題筆記-32.從上到下列印二叉樹 進階筆記二叉樹
- 力扣 - 劍指 Offer 54. 二叉搜尋樹的第k大節點力扣
- 劍指 Offer 32 - II. 從上到下列印二叉樹 II 做題筆記二叉樹筆記
- 重建二叉樹[by Python]二叉樹Python
- 劍指offer 面試題 7 :二叉樹的下一個節點是什麼?面試題二叉樹
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- 劍指 Offer 34. 二叉樹中和為某一值的路徑(java解題)二叉樹Java
- (python版)《劍指Offer》JZ24:二叉樹中和為某一值的路徑Python二叉樹