面试题6:重建二叉树
来源:互联网 发布:淘宝潮牌男裤店铺推荐 编辑:程序博客网 时间:2024/05/16 05:45
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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 = new TreeNode(pre[0]); int i = 0; // 找到根结点在中序中的索引位置 for(; i < vin.size(); ++i){ if(vin[i] == root->val) break; } vector<int> vin_left(vin.begin(), vin.begin()+i); vector<int> vin_right(vin.begin()+i+1, vin.end()); vector<int> pre_left(pre.begin()+1, pre.begin()+i+1); vector<int> pre_right(pre.begin()+i+1, pre.end()); // 递归构造左右子树 root->left = reConstructBinaryTree(pre_left, vin_left); root->right = reConstructBinaryTree(pre_right, vin_right); return root; }};
0 0
- 面试题6:重建二叉树
- 重建二叉树(面试题 6)
- 面试题6:重建二叉树
- 面试题6- 重建二叉树
- 面试题6 重建二叉树
- 面试题6:重建二叉树
- 面试题6 重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 面试题6: 二叉树的重建
- 面试题6:重建二叉树
- 【面试题6】重建二叉树
- 面试题6:重建二叉树
- 面试题6:重建二叉树
- 关于ZJOI2017day2的感想 #3
- 大牛讲解信号与系统以及数字信号处理
- 【优选问答】为什么我们散户买进的股票不涨反降,卖了就涨?
- SVM的常见核函数及其选取
- VS2010对Excel2010进行操作
- 面试题6:重建二叉树
- 在 MATLAB 中如何提取多元方程的系数?
- 机器学习-周志华-个人练习4.4
- 【游记】ZJOI 2017 Day2 #3
- 【BZOJ1179】【APIO2009】Atm(tarjan+spfa)
- Android App压力测试之Monkey
- 天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)
- 面试题18:树的子结构
- myeclipse git和github使用