/** @lc app=leetcode.cn id=99 lang=javascript** [99] 恢复二叉搜索树*/// @lc code=start
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {void} Do not return anything, modify root in-place instead.*/
var recoverTree = function(root) {/*** 中序遍历的二叉搜索树数组整体上是有序递增的,出现乱序之后* 从第一个节点开始遍历 找到最大值,然后找到剩下所有升序* 里面的最小值,二者交换位置。*/let firstMaxNode = null;let lastMinNode = null;let prevNode = new TreeNode(-Infinity); //保证二叉树前面那个节点很小很小let inorder = root => {if(!root) return;inorder(root.left)//记录下两个最值if(prevNode.val>root.val) {lastMinNode=root;if(!firstMaxNode)firstMaxNode=prevNode;}prevNode=root;inorder(root.right);}inorder(root);if(firstMaxNode&&lastMinNode) {//交换位置let temp = firstMaxNode.val;firstMaxNode.val = lastMinNode.val;lastMinNode.val= temp;}};
// @lc code=end

LC-恢复二叉搜索树(JavaScript实现)相关推荐

  1. LeetCode 98验证二叉搜素树(中序遍历)99恢复二叉搜索树

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复制ip地址&94 ...

  2. 刻意练习:LeetCode实战 -- Task24. 恢复二叉搜索树

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  3. 72. Leetcode 99. 恢复二叉搜索树 (二叉搜索树-中序遍历类)

    给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树 .示例 1:输入:root = [1,3,null,null,2] 输出:[3,1, ...

  4. 【数据结构与算法】之深入解析“恢复二叉搜索树”的求解思路与算法示例

    一.题目要求 给你二叉搜索树的根节点 root ,该树中的恰好两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树. 示例 1: 输入:root = [1,3,null,null,2] 输出 ...

  5. 99. Recover Binary Search Tree 恢复二叉搜索树

    二叉搜索树中的两个节点被错误地交换. 请在不改变其结构的情况下,恢复这棵树. 示例 1: 输入: [1,3,null,null,2] 1/3\2 输出: [3,1,null,null,2] 3/1\2 ...

  6. 恢复二叉搜索树Python解法

    给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树 . 来源:力扣(LeetCode) 链接:https://leetcode-cn.c ...

  7. 99. 恢复二叉搜索树

    root 是一棵错误的二叉搜索树(有2个节点被错误交换) 发生在逆序对的头,尾这两个位置 第2个错误节点:最后一个逆序对中较小的那个节点 second /*** Definition for a bi ...

  8. [Leetcode][第99题][JAVA][恢复二叉搜索树][中序遍历]

    [问题描述][困难] [解答思路] 1. 显示中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {public void recoverTree(TreeNode r ...

  9. 99. Recover Binary Search Tree(恢复二叉搜索树)

    题目链接:https://leetcode.com/problems/recover-binary-search-tree/ 思路: 看到二叉搜索树时,我想到的是中序遍历符合从大到小的原则. 然后根据 ...

  10. 深度优先搜索DFS | Morris遍历:力扣99. 恢复二叉搜索树

    1.题目描述: 2.题解: 方法1:中序遍历迭代 二叉搜索树的性质: 1.若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值: 2.若任意节点的右子树不空,则右子树上所有节点的值均大于 ...

最新文章

  1. iexpress全力打造“免检”***
  2. java hello work_Java入门教程系列 – 第一个程序 “hello, world”
  3. 【鸿蒙 HarmonyOS】UI 布局 ( 帧布局 StackLayout )
  4. Python学习 第2天 IDE开发工具
  5. WebGL学习(1) - 三角形
  6. ai如何旋转画布_「AI教程」使用AI制作3D立体文字效果
  7. bzoj1143/2718 祭祀river(最大独立集)
  8. 命令发送广播_那些你不知道的ping命令参数
  9. 经典算法排序——插入排序
  10. HTML5初探 - 基本的HTML5模版
  11. 小宝宝即将来到这个世界,希望迎接他的是大家的祝福
  12. ASP .NET中一个可以用来大作文章的地方。
  13. Android Application.java以及它的作用
  14. linux java 多线程_Java多线程:Linux多路复用,Java NIO与Netty简述
  15. android ppt 自动播放视频,ppt如何循环播放,ppt如何添加视频设置自动播放(ppt转换成视频)...
  16. [webpack] Content not from webpack is served from “xxxx“ 并且 http://localhost:8080/ 数据为空解决方案
  17. linux系列---常见命令
  18. 【树莓派】更新树莓派SD卡测速一键脚本,SD卡读写速度测试
  19. 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
  20. c语言 平均差 标准差,平均差与标准差计算公式中的平均数是()。

热门文章

  1. 【随手写】BAT脚本之获取N天前日期
  2. 网上百度的题目,随手写了一下
  3. 解决xcel数据导入MySQL数据库【日期数据格式混乱】的问题
  4. 2021Java春招面试:看完这篇文终于搞明白了
  5. 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
  6. Python期末大作业 —— 射靶
  7. java反序加密_对java程序加密防止反编译
  8. Unity的读表,存档,读档
  9. html关机命令,shutdown关机命令不起作用
  10. ffmpeg连接rtsp流提示Connection refused