重建二叉树
来源:互联网 发布:sql 父子级联查询 编辑:程序博客网 时间:2024/06/15 10:51
重建二叉树
题目
输入二叉树的先序遍历和中序遍历,重建一课二叉树
代码
#include<iostream>#include<vector>using namespace std;/* 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) { TreeNode *root=new TreeNode(pre[0]);//必须使用new或malloc,否则局部变量会在下一循环被删除 vector<int> vinLeft, vinRight; bool isLeft = true; //根据前序pre第一个元素将中序分成两部分 for (int i = 0; i<vin.size(); i++){ if (vin[i] == pre[0]){ isLeft = false; continue; } if (isLeft) vinLeft.push_back(vin[i]); else vinRight.push_back(vin[i]); } vector<int> preLeft, preRight; //根据中序左右两部分大小将前序分成两部分 for (int i = 1; i<pre.size(); i++){ if (i <= vinLeft.size()) preLeft.push_back(pre[i]); else preRight.push_back(pre[i]); } //左子树迭代 if (vinLeft.size() == 0) root->left = NULL; else root->left = reConstructBinaryTree(preLeft, vinLeft); //右子树迭代 if (vinRight.size() == 0) root->right = NULL; else root->right = reConstructBinaryTree(preRight, vinRight); return root; }};
阅读全文
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- Distances to Zero 【二分枚举】
- sdwebimage加载本地图片
- 迭代器、迭代对象、闭包的应用、装饰器
- sed命令
- RecycleView的使用小结
- 重建二叉树
- linux学习记录2---远程连接LINUX故障排查
- c++学习点滴
- Node.js 来构建前端的环境
- oracle 循环insert
- 数据库——触发器
- Java中的main()方法详解
- hbase shell之常用过滤器设置
- Flip Game 深搜