博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leedcode 99] Recover Binary Search Tree
阅读量:5267 次
发布时间:2019-06-14

本文共 1075 字,大约阅读时间需要 3 分钟。

Two elements of a binary search tree (BST) are swapped by mistake.

Recover the tree without changing its structure.

Note:

A solution using O(n) space is pretty straight forward. Could you devise a constant space solution?

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    TreeNode firstNode;    TreeNode secondNode;    TreeNode pre;    public void recoverTree(TreeNode root) {        //对于二叉搜索树来讲,中序遍历应该是递增的,本题要求O(1)空间,出发点就是中序遍历的变形        //在中序遍历的过程中,需要找到fisrtWrongNode和secondWrongNode,本题最主要的是,使用pre全局遍历,        /*递归的时候使得pre=root,达到pre能够保存root前置节点的作用,通过比较root和pre的值,找到逆序对,        如果两个数相邻置换,则逆序对只有一个,        如果两个数不相邻,逆序对有两个,此时需要更新secondWrongNode*/        if(root==null) return;        inOrder(root);        swap(firstNode,secondNode);    }    public void inOrder(TreeNode root){        if(root==null) return;        inOrder(root.left);       /* if(pre!=null&&firstNode==null&&root.val

 

转载于:https://www.cnblogs.com/qiaomu/p/4652797.html

你可能感兴趣的文章
线程同步之读写锁
查看>>
codeforces 620D Professor GukiZ and Two Arrays
查看>>
pylint
查看>>
Oracle——SQL基础
查看>>
Java设计模式(2)——工厂方法模式
查看>>
互联网基础之DIV和CSS二
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
传微软Windows Phone 7将更新支持HTML 5
查看>>
P1970 花匠
查看>>
query和exec区别
查看>>
java语言与java技术
查看>>
南阳22
查看>>
分享一次在Windows Server2012 R2中安装SQL Server2008
查看>>
NOIP2016提高A组五校联考2总结
查看>>
OpenStack_Glance
查看>>
Spring PropertyPlaceholderConfigurer数据库配置
查看>>
RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
查看>>
Python日期计算
查看>>
用css3绘制你需要的几何图形
查看>>