当前位置: 首页 > wzjs >正文

江门市智企互联网站建设苏州外发加工网

江门市智企互联网站建设,苏州外发加工网,网站风格确定,虚拟主机销售网站模板1 题目:99. 恢复二叉搜索树 官方标定难度: 给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输…

1 题目:99. 恢复二叉搜索树

官方标定难度:

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。

示例 1:

在这里插入图片描述

输入:root = [1,3,null,null,2]
输出:[3,1,null,null,2]
解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。

示例 2:

在这里插入图片描述

输入:root = [3,1,4,null,null,2]
输出:[2,1,4,null,null,3]
解释:2 不能在 3 的右子树中,因为 2 < 3 。交换 2 和 3 使二叉搜索树有效。

提示:

树上节点的数目在范围 [2, 1000] 内
− 2 31 < = N o d e . v a l < = 2 31 − 1 -2^{31} <= Node.val <= 2^{31} - 1 231<=Node.val<=2311

进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用 O(1) 空间的解决方案吗?

2 solution

二叉搜索树的中序遍历是一个单调递增数列,所以需要找到顺序不对的地方,如果只有一个,说明是相邻的两个数交换了顺序,如果是两个,说明前面那个偏大的和后面那个偏小的错了。

代码

class Solution {/** 有一个递增序列两个数交换的位置,如果相邻,则只出现一次前面比后面大,交换即可* 如果出现两次,则第一次大的,和第二次小的交换就行*/TreeNode *f{nullptr}, *g{nullptr}, *h{nullptr};int val{-3000};void dfs(TreeNode *root) {if (!root) return;dfs(root->left);if (root->val < val) {if (!f) f = h, g = root;else g = root;}val = root->val;h = root;dfs(root->right);}public:void recoverTree(TreeNode *root) {dfs(root);swap(f->val, g->val);}
};

结果

在这里插入图片描述

http://www.dtcms.com/wzjs/551838.html

相关文章:

  • 京东云服务器怎么做网站网站怎么做拉新
  • 做磁力搜索网站好吗长沙手机网站制作
  • 湛江建设局网站家具网站建设的背景
  • 深圳网站建设推广公司服装网站怎么做
  • 西安seo外包价格嘉兴优化网站费用
  • 做房产网站多少钱找回微信
  • 网站 简单官方网站下载钉钉
  • 江阴网站制作wordpress导出数据字典
  • 网站搜索优化怎么做网上书城网站开发的目的与意
  • 企业网站为什么都选千博企业网站支付网站开发建设费用怎么入账
  • 天津做无痛人流费用五洲网站html网站系统
  • 宝安公司可以网站设计wordpress 评论加星
  • Wordpress建站的网站代理协议
  • 阜宁网站制作收费在线咨询建筑模板怎么装
  • 简易购物网站模板最便宜的网站建设公司
  • 从化网站制作网站建设见站分析和准备论文
  • 辽宁城市建设职业技术学院教育网站报班学网站开发价格
  • 网站开发工程师岗位说明书网站开发进入腾信职位
  • 企业网站建设经验分享域名推荐网站
  • 北海网站建设阳泉住房和城乡建设部网站
  • 公司的英文网站上海市虹口市容建设公司网站
  • 外汇网站建设公司平台企业
  • 免费行情软件app网站大全下载u288免费外贸网站有哪些
  • 徐州企业做网站wap是什么意思歌词
  • 淘宝网站建设的目标什么电子工程网站
  • 长春网站建设厂家旅游网站开发流程
  • 贵阳建设网站谁有学做网站论坛账号
  • 做网站要的图片斗鱼部门网站建设的意义
  • 惠州网站制作案例北京做网站公司推荐
  • 新翼设计网站建设公司谷歌网站开发客户