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 (递增顺序搜索树)相关推荐

  1. [leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间

    1723. 完成所有工作的最短时间 题目 思路 动态规划 状态转移方程 优化 求和打表 快速枚举每种选取情况jjj的子集ppp 代码 算法复杂度 题目来源于leetcode,解法和思路仅代表个人观点. ...

  2. LeetCode每日一题-2021/06/15-山脉数组的峰顶索引

    山脉数组的封顶索引–java–二分法 思路: 这道题最容易想到的就是枚举每个数字,而要想将时间复杂度降为O(logN), 可以使用二分的思想(利用arr[0] < arr[1] < - a ...

  3. 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 ...

  4. LeetCode 每日一题 2021/9/27-2021/10/3

    记录了初步解题思路 以及本地实现代码:并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/27 639. 解码方法 II 9/28 437. 路径总和 III 9/29 517. 超级洗衣机 9 ...

  5. 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 ...

  6. Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)

    思路:根据二叉搜索树的中序遍历是递增的这一性质,我们只需列出中序遍历的结果,并遍历一遍便可得到最小绝对值,或者在中序遍历的过程中,min{now-pre,res}进行比较: void dfs(Tree ...

  7. Leetcode 每日一题双题版(2.25+2.24)模拟练细节

    Leetcode 每日一题双题版(2.25+2.24)模拟练细节 前言 刚刚敲了今天刷新的题目,然后昨天的也写了,就想着更新一下blog 两道题都是模拟题,对于模拟,我的看法就是看懂题目,拿捏细节,难 ...

  8. LeetCode每日一题

    每日一题 2021.10.30 260. 只出现一次的数字 III 这题还是比较简单,用个map统计一下各数字出现的次数,最后遍历map的键值,找出值为1的两个数字. class Solution { ...

  9. LeetCode每日一题之排列硬币

    前言: 大家好,今天是LeetCode每日一题的第十天,,给大家分享的是排列硬币,难度系数两颗星!废话不多说,先上题目! 1.1 题目要求 题目类型:排列硬币 题目内容: 总共有n枚硬币,将它们摆成一 ...

最新文章

  1. perl 登录linux服务器,用Perl管理Linux操作系统的配置文件
  2. 对“纯手工编写的第一个Hibernate程序”的改进
  3. AngularJs $anchorScroll、$controller、$document
  4. .Net微服务实战之技术选型篇
  5. Python连接MySQL及一系列相关操作
  6. c++ 程序在内存中的分布
  7. java范形_java为什么要用范(泛)型?
  8. 今天,Google 在中国终于光明正大地搞 AI 了!
  9. python封装sql脚本_pymysql的简单封装代码实例
  10. SqlServer中使用游标进行双重遍历
  11. C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
  12. gets函数没有输入会怎样_如果没有“227事件”,肖战的未来会是怎样的?
  13. 网页中的QQ和阿里旺旺聊天图标
  14. FPGA学习网站推荐
  15. grunt,gulp
  16. Excel打开csv文件乱码
  17. 天龙八单机服务器 修改 藏宝,天龙八部单机版
  18. 跟着团子学SAP SD:项目里程碑开票流程演示(含预收账款“开票”及正式开票) VF01
  19. 常见短信平台发送的号码有哪些?95开头、106开头短信发送号码区别说明
  20. 御坂坂的c++学习之路(4)

热门文章

  1. 2001年计算机等级考试上机题,2001年9月全国计算机等级考试二级QBASIC试题
  2. fmc接口定义_FMC(FPGA Mezzanine Card)_百度百科
  3. WinHex修改图片宽高
  4. (附源码)基于springboot的物流配货管理系统的设计与实现 毕业设计 250858
  5. Windows7 war3宽屏解决方案
  6. 微型计算机技术及应用考题,2017年计算机应用试题及答案
  7. Scrum指南精要总结(基于2020年版)
  8. 并发、并行、同步、异步、进程,线程、串行、并行?一文弄懂八大概念
  9. 直流电流测量电路的工作原理
  10. 微服务 RocketMQ-延时消息 消息过滤 管控台搜索问题