剑指offer——重建二叉树
2017-02-18 11:29
351 查看
/** * 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 inlen = vin.size(); if(inlen==0) return NULL; //创建根节点,肯定是前序遍历的第一个节点 TreeNode* root=new TreeNode(pre[0]); vector<int> left_pre,left_vin,right_pre,right_vin; //在中序遍历中找到根节点 int gen = 0; for(int i=0;i<inlen;i++) { if(vin[i]==pre[0]) { gen = i; break; } } //构建左右子树的前序遍历和中序遍历 for(int i=0;i<gen;i++) { left_pre.push_back(pre[i+1]); left_vin.push_back(vin[i]); } for(int i=gen+1;i<inlen;i++) { right_pre.push_back(pre[i]); right_vin.push_back(vin[i]); } root->left = reConstructBinaryTree(left_pre,left_vin); root->right = reConstructBinaryTree(right_pre,right_vin); return root; } };
相关文章推荐
- 【剑指offer系列】 重建二叉树___6
- (php实现剑指offer)重建二叉树
- 《剑指Offer》 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- JAVA实现重建二叉树(《剑指offer》)
- 剑指offer--重建二叉树[根据二叉树的先序、中序遍历结果重建二叉树]
- 《剑指offer》006-重建二叉树
- 面试题06_重建二叉树——剑指offer系列
- 剑指offer(C++)——重建二叉树
- 《剑指offer》刷题笔记(树):重建二叉树
- 《剑指offer》-04重建二叉树
- 剑指Offer(4)重建二叉树
- 剑指offer_二叉树---重建二叉树
- 剑指offer——重建二叉树___
- 《剑指Offer》之“重建二叉树”
- 《剑指offer》面试题6 重建二叉树
- 《剑指offer》重建二叉树
- 剑指offer系列(5)——重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer-面试题6 重建二叉树
- 剑指offer(四)重建二叉树