二叉树的重建
来源:互联网 发布:su for mac 教学视频 编辑:程序博客网 时间:2024/05/22 08:15
问题描述:链接:https://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6
来源:牛客网
来源:牛客网
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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(vin.size()==0) return NULL; int root = pre[0]; //根结点的值 //TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode)); //node->val = root; TreeNode *node = new TreeNode(root); /* int pos = 0; //vin中root的位置 for(;pos<vin.size();pos++) { if(vin[pos]==root) break; } */ int pos = std::find(vin.begin(), vin.end(), root) - vin.begin(); vector<int> pre_left,pre_right,vin_left,vin_right; for(int i=0;i<pos;i++) { pre_left.push_back(pre[i+1]); vin_left.push_back(vin[i]); } for(int j=pos+1;j<vin.size();j++) { pre_right.push_back(pre[j]); vin_right.push_back(vin[j]); } node->left = reConstructBinaryTree(pre_left,vin_left); node->right = reConstructBinaryTree(pre_right,vin_right); return node; } };
0 0
- 二叉树的重建
- 二叉树的重建!!!
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 算法:二叉树的重建
- 重建二叉树的思路
- 重建二叉树以及树的遍历
- 关于二叉树重建的问题
- POJ 2255 经典的重建二叉树
- POJ 2255 二叉树的重建
- 二叉树的重建(递归实现)
- 面试题6: 二叉树的重建
- 二叉树的遍历及重建
- HED测试单张图片示例
- 如何利用Ansible角色对基础设施环境进行抽象
- spring中的Assert断言
- Android权限管理之Permission权限机制及使用
- Oracle
- 二叉树的重建
- 博客第一天
- Hibernate缓存机制
- SourceTree使用
- Compareable接口和Comparator + 公用排序方法
- 设计模式学习笔记——组合(Composite)模式
- 润乾V5通过下拉日历传参改变查询语句中数据库名称字段
- php错误日志输出
- 数字字符串的格式化