剑指Offer-重建二叉树
来源:互联网 发布:绵阳涪城编程培训学校 编辑:程序博客网 时间:2024/06/05 04:45
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
二叉树节点的定义如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { if(pre.size() == 0){ //前序遍历为空,返回NULL return NULL; } TreeNode *root = new TreeNode(pre[0]); //前序的第一个元素是根结点 vector<int> left_pre,right_pre,left_in,right_in; //保存前序的左右子树和中序的左右子树 int i = 0; int j = 0; while(i < in.size()&& root->val != in[i]) { //查看中序中的元素是否等于pre[0],用i标记其位置 i++; } for( j = 0;j < i;j++){ //找到根结点的位置 left_in.push_back(in[j]); left_pre.push_back(pre[j+1]); } for(j = i+ 1 ;j < in.size();j++){ right_pre.push_back(pre[j]); right_in.push_back(in[j]); } root->left = reConstructBinaryTree(left_pre,left_in); root->right = reConstructBinaryTree(right_pre,right_in); return root; }
0 0
- [剑指offer]重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer--重建二叉树
- 剑指offer---重建二叉树
- 剑指Offer-重建二叉树
- 剑指offer:重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》重建二叉树
- 【剑指Offer】重建二叉树
- 剑指offer-重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer 重建二叉树
- 剑指offer:重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer 重建二叉树
- [剑指offer]重建二叉树
- 剑指offer--重建二叉树
- 《剑指offer》重建二叉树
- C# IHttpHandler 概述
- 逻辑运算符&&、||与&、| 位运算符
- HashMap的使用
- Python MySQL 实作
- crond定时任务
- 剑指Offer-重建二叉树
- python多线程
- RN,webview里onMessage属性的使用
- 华为园区交换机的选型和应用
- C++基础复习
- 圆的面积
- 设计模式——单例
- log4j报异常
- HDU 2647 Reward