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

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

题目意思为一个二叉搜索树,有两个元素位置颠倒了,现在让你把它还原,但是题目要求空间复杂度O(1),我们知道二叉搜索树的中序遍历是有序的,那么利用这一点,找到第一个无序的

地方,记录为first,第二个为second,这样就是常量空间复杂度了,注意有一种情况是刚好两个相邻的颠倒顺序。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private: TreeNode *pre;         TreeNode *first;         TreeNode *second;public:    void recoverTree(TreeNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(root==NULL)        return;        pre = NULL;        first = NULL;        second = NULL;        Inorder(root);        first->val ^= second->val;        second->val ^= first->val;        first->val ^= second->val;    }    void Inorder(TreeNode *root)    {        if(root==NULL)        return;        Inorder(root->left);        if(pre!=NULL)        {            if(pre->val > root->val)            {                if(first==NULL)                {                    first = pre;                    second = root;                }                else                {                    second = root;                }            }        }        pre = root;        Inorder(root->right);    }};

 

转载于:https://www.cnblogs.com/727713-chuan/p/3317235.html

你可能感兴趣的文章
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
仍需"敬请期待"的微信沃卡
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
POJ 2918 求解数独
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
Mysql explain
查看>>
初识闭包
查看>>
java tcp socket实例
查看>>
011 指针的算术运算
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>