LeetCode 105. 已知前序中序 求二叉树
文章目录
- 1. 题目
- 2. 解题
1. 题目
类似POJ 2255 Tree Recovery
2. 解题
class Solution {public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {unordered_map<int,int> m;//哈希表for(int i = 0; i < inorder.size(); ++i) {m[inorder[i]] = i;//方便后面查找位置}return build(preorder, inorder,0,preorder.size()-1,0,inorder.size()-1,m);}TreeNode* build(vector<int>& preorder, vector<int>& inorder, int pS, int pE, int iS, int iE, unordered_map<int,int> &m){if(pS > pE)return NULL;TreeNode *root = new TreeNode(preorder[pS]);int leftlen = m[preorder[pS]]-iS;root->left = build(preorder,inorder,pS+1,pS+leftlen,iS,m[preorder[pS]]-1,m);root->right = build(preorder,inorder,pS+1+leftlen,pE,m[preorder[pS]]+1,iE,m);return root;}
};
- 别人的循环解法,很牛,也很难理解
class Solution {//别人写的,循环法
public:TreeNode* buildTree(vector<int>& pre, vector<int>& in) {if (pre.empty()) return NULL;stack<TreeNode*> S;TreeNode* root = new TreeNode(pre[0]);S.push(root);for (int i = 1, j = 0; i < pre.size(); i++) { // i-前序序号,j-中序序号TreeNode *back = NULL, *cur = new TreeNode(pre[i]);while (!S.empty() && S.top()->val == in[j]) {back = S.top(), S.pop(), j++;} if (back)back->right = cur;elseS.top()->left = cur;S.push(cur);}return root;}
};
LeetCode 105. 已知前序中序 求二叉树相关推荐
- LeetCode 889. 已知前序后序 求二叉树(不唯一)
1. 题目 返回与给定的前序和后序遍历匹配的任何二叉树. pre 和 post 遍历中的值是不同的正整数. 示例:输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7 ...
- 二叉树已知前序中序求后序(超简单)(java)
首先解题思路来自b站某高手,思路清奇,请看官先看视频: 无脑秒解!已知先/后序遍历与中序遍历,求后/先序遍历._哔哩哔哩_bilibili大佬轻喷,这个题做很简单,但是想做的快做的准应该没有比这更快的 ...
- 已知前序中序求层序 c语言递归,二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现...
# re: 二叉树的遍历:前序,中序输出有点问题,但是不知道到怎么修改,想请教各位大神 回复 更多评论 #include"stdio.h" #include"mall ...
- 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)
二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序) 之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...
- 已知前序中序输出后序(java)返回值是数组
例子: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 后序:3, 4, 2, 6, 5, 1(左右根) 1.先说根据前序中序求后序,前序总是沿着根 ...
- 已知前序中序,求后序
已知二叉树的前序和中序,求其后序 例:前序(A B D G H C E I F J ) 中序(G D H B A E I C J F) 其后序为:G H D B I E J F C A 思路:先序的遍 ...
- POJ 2255 Tree Recovery(已知前序中序,求后序)
1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...
- java前中后序_前序中序求后序的java算法
二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历:对任一子树, ...
- C/C++面试题—重建二叉树【前序 + 中序- 重建二叉树 和 后序 + 中序 - 重建二叉树】
题目介绍 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...
最新文章
- MySQL创建用户与授权方法
- 图解从上电到执行main函数的处理
- javascript问题积累
- yagmail和keyring的安装与注册
- Learning Moodle 3.5 学习Moodle 3.5 Lynda课程中文字幕
- notepadpython插件_Notepad Python
- JavaScript 常见安全漏洞和自动化检测技术
- KUKA WorkVisual 编程教学
- golang mian函数和init函数
- canva怎么拼接图片_canvas图片拼接(横向)
- LINTCODE——吹气球
- 微信小程序监听手势左右滑动
- iOS仿微信录像和拍照(swift5.0)
- IBM p系列小型机日常维护及故障排除时常用命令(检查IBM设备状态汇总)
- 二叉树的前序遍历,中序遍历,后序遍历
- 从全备中恢复单库或单表,小心有坑!
- 核心微生物分析_中国白酒发酵过程中的核心微生物群及其与环境因子的关系-微生物学报.PDF...
- 请选择服务器许可证文件,获取并安装许可文件 | PowerMill 2022 | Autodesk Knowledge Network...
- 计算机精品免费视频下载 收藏
- rpcs3模拟器配置要求是什么?
热门文章
- unsigned int + int型结果分析
- 某月某日前包括当天吗_10月26日,你真的理解了导数的定义吗?(答思考题送猫王小音箱)...
- linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算
- nanotime java 博客园_System.nanoTime (计时工具类)
- JAVA基础学习之路(三)类定义及构造方法
- Hibernate写hql语句与不写hql语句的区别?
- 给javascript初学者的24条最佳实践
- ARM汇编Hello,World
- Web开发中需要注意的地方
- C++ 下一代标准库 tr1中默认的哈希 FNV hash