原题链接:https://leetcode-cn.com/problems/recover-a-tree-from-preorder-traversal/

迭代 + 栈

TreeNode* recoverFromPreorder(string S) {// 存储当前节点的路径stack<TreeNode*> path;// 存储字符串中的位置int pos = 0;while (pos < S.size()) {//获取当前层数int level = 0;while (S[pos] == '-') {++level;++pos;}//获取节点值int value = 0;while (pos < S.size() && isdigit(S[pos])) {value = value * 10 + (S[pos] - '0');++pos;}//构造当前节点TreeNode* node = new TreeNode(value);if (level == path.size()) {//如果当前节点的深度等于当前路径长度(前一个节点是当前节点的父节点)if(!path.empty()) {//如果不是第一个节点,前一个节点的左子节点为当前节点path.top()->left = node;}}else {//如果当前节点的深度不等于当前路径长度(前一个节点是当前节点的父节点)while (level != path.size()) {//通过queue弹出其他子节点,找到当前节点的父节点path.pop();}//找到父节点,因为此时左子节点已确定,所以赋值给右子节点path.top()->right = node;}//放入queue中path.push(node);}//全部弹出,只剩根节点while (path.size() > 1) {path.pop();}//返回根return path.top();}

leetcode算法题--从先序遍历还原二叉树相关推荐

  1. leetcode 题库1028--从先序遍历还原二叉树

    从先序遍历还原二叉树 我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其 ...

  2. js怎么取到遍历中的特定值_LeetCode 1028 hard 从先序遍历还原二叉树 Python解题记录...

    我们在该专栏中记录了我俩的刷题记录. 我们更新的所有题目都在目录中. 今天的题目是 力扣​leetcode-cn.com 题目 We run a preorder depth first search ...

  3. 数据结构基础 后序遍历和中序遍历还原二叉树

    [问题描写叙述] 二叉树            A        /       /        B       C      /   /   /   /      D   E   F   G   ...

  4. 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树

    Construct Binary Tree from Preorder and Inorder Traversal 原题链接Construct Binary Tree from Preorder an ...

  5. leetcode1028. 从先序遍历还原二叉树(dfs/栈)

    我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度为 D ...

  6. C++ 先序遍历还原二叉树

    输入数组,数组中为树先序遍历结果,空节点值为-1 Node* createTree(vector<int> nums, int &pos) {int n = nums.size() ...

  7. LeetCode 1028. 从先序遍历还原二叉树(栈)

    文章目录 1. 题目 2. 栈解题 1. 题目 我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.( ...

  8. 算法-从先序遍历还原二叉树

    题目: 我们从二叉树的根节点 root 开始进行深度优先搜索.在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度 ...

  9. Leetcode--1028. 从先序遍历还原二叉树(Java)

    我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度为 D ...

最新文章

  1. 政府要尽快对应用商店出台管理办法
  2. sqlserver怎么将excel表的数据导入到数据库中
  3. 链表——PowerShell版
  4. Flutter 下拉刷新花式玩法
  5. idea中reload all from disk_SpringBoot IDEA中实现热部署
  6. LeetCode 1185. 一周中的第几天
  7. 除去WebView默认存在的一定像素的边距问题
  8. php字符串分割汉字,php支持中文字符串分割的函数
  9. #自定义多级菜单_怎么搞定排版中的多级列表问题?
  10. Android 中文API (65) —— BluetoothClass[蓝牙]
  11. sqlite 交叉编译-转
  12. 命名实体识别研究综述
  13. gpg: no default secret key: 私钥不可用
  14. 加载不同库,同名函数引起的BUG一例
  15. 献给初学者-DSP入门教程
  16. iPad 生产力指南:如何把MathType7安装在iPad中,方便写公式,写论文,公式编辑器,完全免费
  17. 从融360到理财魔方、再到韭菜财经,新金融正确姿势为哪般?
  18. 动态规划旅游问题:汽车加满油可以跑n千米,中途有若干个加油站,请用动态规划的方式求解中途加油次数最少的方案。
  19. 慎用Application.DoEvents( )
  20. mysql 编码错误_【分享】MySQl操作系统提示错误编码

热门文章

  1. python代码示例下载-python爬取音频下载的示例代码
  2. python语言的理解-使用Python语言理解递归
  3. 学会python之后-python学会基础语法之后,如何提高?
  4. 怎么自学python 知乎-你是如何自学 Python 的?
  5. python怎么读文件名-python如何获取当前文件夹下所有文件名详解
  6. python基础菜鸟教程-菜鸟教程学习python
  7. Intel深度摄像头RealSense D345(实感双目摄像头)和目标检测结合使用
  8. python中的迭代库
  9. strftime和strptime使用
  10. centos 5.5中如何由一般用户切换为root用户