leetcode算法题--从先序遍历还原二叉树
原题链接: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算法题--从先序遍历还原二叉树相关推荐
- leetcode 题库1028--从先序遍历还原二叉树
从先序遍历还原二叉树 我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其 ...
- js怎么取到遍历中的特定值_LeetCode 1028 hard 从先序遍历还原二叉树 Python解题记录...
我们在该专栏中记录了我俩的刷题记录. 我们更新的所有题目都在目录中. 今天的题目是 力扣leetcode-cn.com 题目 We run a preorder depth first search ...
- 数据结构基础 后序遍历和中序遍历还原二叉树
[问题描写叙述] 二叉树 A / / B C / / / / D E F G ...
- 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
Construct Binary Tree from Preorder and Inorder Traversal 原题链接Construct Binary Tree from Preorder an ...
- leetcode1028. 从先序遍历还原二叉树(dfs/栈)
我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度为 D ...
- C++ 先序遍历还原二叉树
输入数组,数组中为树先序遍历结果,空节点值为-1 Node* createTree(vector<int> nums, int &pos) {int n = nums.size() ...
- LeetCode 1028. 从先序遍历还原二叉树(栈)
文章目录 1. 题目 2. 栈解题 1. 题目 我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.( ...
- 算法-从先序遍历还原二叉树
题目: 我们从二叉树的根节点 root 开始进行深度优先搜索.在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度 ...
- Leetcode--1028. 从先序遍历还原二叉树(Java)
我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其直接子节点的深度为 D ...
最新文章
- 政府要尽快对应用商店出台管理办法
- sqlserver怎么将excel表的数据导入到数据库中
- 链表——PowerShell版
- Flutter 下拉刷新花式玩法
- idea中reload all from disk_SpringBoot IDEA中实现热部署
- LeetCode 1185. 一周中的第几天
- 除去WebView默认存在的一定像素的边距问题
- php字符串分割汉字,php支持中文字符串分割的函数
- #自定义多级菜单_怎么搞定排版中的多级列表问题?
- Android 中文API (65) —— BluetoothClass[蓝牙]
- sqlite 交叉编译-转
- 命名实体识别研究综述
- gpg: no default secret key: 私钥不可用
- 加载不同库,同名函数引起的BUG一例
- 献给初学者-DSP入门教程
- iPad 生产力指南:如何把MathType7安装在iPad中,方便写公式,写论文,公式编辑器,完全免费
- 从融360到理财魔方、再到韭菜财经,新金融正确姿势为哪般?
- 动态规划旅游问题:汽车加满油可以跑n千米,中途有若干个加油站,请用动态规划的方式求解中途加油次数最少的方案。
- 慎用Application.DoEvents( )
- mysql 编码错误_【分享】MySQl操作系统提示错误编码