LeetCode 每日一题 2021-4-25 (递增顺序搜索树)
897. 递增顺序搜索树
难度简单
给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。
示例 1:
输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
思路:
本题需要先对二叉树进行中序遍历搜索,并按照获得的数组顺序进行新树构建;
新树构建中就相当于单纯的建立右子节点的链表。
代码:
// 递归实现遍历二叉树
void getTree(TreeNode* Node, vector<int>& data){if(Node==nullptr) return;getTree(Node->left, data);data.push_back(Node->val);getTree(Node->right, data);
}// 循环实现遍历二叉树
void getTreeBy(TreeNode* Node, vector<int>& data ){stack<TreeNode*> res;res.push(Node);while(!res.empty()){TreeNode* tem=res.top();res.pop();if(tem){if(tem->right) res.push(tem->right);res.push(tem);res.push(nullptr);if(tem->left) res.push(tem->left);}else{data.push_back(res.top()->val);res.pop();}}
}TreeNode* increasingBST(TreeNode* root) {vector<int> data;//getTree(root, data); // 递归实现遍历二叉树getTreeBy(root, data); // 循环实现中序遍历二叉树TreeNode* ans=new TreeNode(-1);TreeNode* cur = ans;for(auto index:data ){cur->right = new TreeNode(index);cur = cur->right;}return ans->right;
}
LeetCode 每日一题 2021-4-25 (递增顺序搜索树)相关推荐
- [leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间
1723. 完成所有工作的最短时间 题目 思路 动态规划 状态转移方程 优化 求和打表 快速枚举每种选取情况jjj的子集ppp 代码 算法复杂度 题目来源于leetcode,解法和思路仅代表个人观点. ...
- LeetCode每日一题-2021/06/15-山脉数组的峰顶索引
山脉数组的封顶索引–java–二分法 思路: 这道题最容易想到的就是枚举每个数字,而要想将时间复杂度降为O(logN), 可以使用二分的思想(利用arr[0] < arr[1] < - a ...
- 208. Implement Trie (Prefix Tree)(Leetcode每日一题-2021.04.14)
Problem A trie (pronounced as "try") or prefix tree is a tree data structure used to effic ...
- LeetCode 每日一题 2021/9/27-2021/10/3
记录了初步解题思路 以及本地实现代码:并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/27 639. 解码方法 II 9/28 437. 路径总和 III 9/29 517. 超级洗衣机 9 ...
- 830. Positions of Large Groups(Leetcode每日一题-2021.01.05)
Problem In a string s of lowercase letters, these letters form consecutive groups of the same charac ...
- Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)
思路:根据二叉搜索树的中序遍历是递增的这一性质,我们只需列出中序遍历的结果,并遍历一遍便可得到最小绝对值,或者在中序遍历的过程中,min{now-pre,res}进行比较: void dfs(Tree ...
- Leetcode 每日一题双题版(2.25+2.24)模拟练细节
Leetcode 每日一题双题版(2.25+2.24)模拟练细节 前言 刚刚敲了今天刷新的题目,然后昨天的也写了,就想着更新一下blog 两道题都是模拟题,对于模拟,我的看法就是看懂题目,拿捏细节,难 ...
- LeetCode每日一题
每日一题 2021.10.30 260. 只出现一次的数字 III 这题还是比较简单,用个map统计一下各数字出现的次数,最后遍历map的键值,找出值为1的两个数字. class Solution { ...
- LeetCode每日一题之排列硬币
前言: 大家好,今天是LeetCode每日一题的第十天,,给大家分享的是排列硬币,难度系数两颗星!废话不多说,先上题目! 1.1 题目要求 题目类型:排列硬币 题目内容: 总共有n枚硬币,将它们摆成一 ...
最新文章
- perl 登录linux服务器,用Perl管理Linux操作系统的配置文件
- 对“纯手工编写的第一个Hibernate程序”的改进
- AngularJs $anchorScroll、$controller、$document
- .Net微服务实战之技术选型篇
- Python连接MySQL及一系列相关操作
- c++ 程序在内存中的分布
- java范形_java为什么要用范(泛)型?
- 今天,Google 在中国终于光明正大地搞 AI 了!
- python封装sql脚本_pymysql的简单封装代码实例
- SqlServer中使用游标进行双重遍历
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- gets函数没有输入会怎样_如果没有“227事件”,肖战的未来会是怎样的?
- 网页中的QQ和阿里旺旺聊天图标
- FPGA学习网站推荐
- grunt,gulp
- Excel打开csv文件乱码
- 天龙八单机服务器 修改 藏宝,天龙八部单机版
- 跟着团子学SAP SD:项目里程碑开票流程演示(含预收账款“开票”及正式开票) VF01
- 常见短信平台发送的号码有哪些?95开头、106开头短信发送号码区别说明
- 御坂坂的c++学习之路(4)
热门文章
- 2001年计算机等级考试上机题,2001年9月全国计算机等级考试二级QBASIC试题
- fmc接口定义_FMC(FPGA Mezzanine Card)_百度百科
- WinHex修改图片宽高
- (附源码)基于springboot的物流配货管理系统的设计与实现 毕业设计 250858
- Windows7 war3宽屏解决方案
- 微型计算机技术及应用考题,2017年计算机应用试题及答案
- Scrum指南精要总结(基于2020年版)
- 并发、并行、同步、异步、进程,线程、串行、并行?一文弄懂八大概念
- 直流电流测量电路的工作原理
- 微服务 RocketMQ-延时消息 消息过滤 管控台搜索问题