• 【Leetcode】99. 恢复二叉搜索树【DFS】


    题目链接 

    题目的一个重要思路就是:
    正确的二叉搜索树的中序遍历结果是递增的,利用这个定理,在中序遍历树的过程中寻找不满足条件的结点。

    注意点

    这道题目有一个特别有意思的点就是

    下面的这组测试用例: [5,3,9,-2147483648,2]

    里面有一个-2147483648,也就是INT_MIN,在判断的时候一定要注意。

    我在 leetcode讨论 看到了一个C++的Soultion,可以通过1917中的1916个测试用例,唯一不能通过的情况就是这个。

    一点小启发

    通过这到题目,让我感受到了软件测试对极值情况一定要考虑充分。

    想这一道题目就要考虑好:

    1. 二叉搜索树的结点个数的特殊情况(2个结点的情况)

    2. 二叉搜索树结点出现极值的情况(-2147483648)

    My Code

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
        TreeNode* first=NULL;
        TreeNode* second=NULL;
        TreeNode* prev = new TreeNode(INT_MIN);
    public:
        void recoverTree(TreeNode* root) {
            help(root);
            int tempValue=first->val;
            first->val=second->val;
            second->val=tempValue;
        }
        
        void help(TreeNode* root){
            if(root==NULL)  return;
            help(root->left);        
            if(first==NULL && prev->val >= root->val)   first=prev;
            if(first!=NULL && first->val==INT_MIN){
                first=NULL;
            }            
            if(first!=NULL && prev->val >= root->val)   second=root;
            prev=root;
            help(root->right);
        }
    };
  • 相关阅读:
    ZXing 生成、解析二维码图片的小示例
    OpenLDAP 2.4.x源码安装配置
    Elasticsearch & Kibana with Shield
    Kibana SSL
    Kibana 官方示例
    ELK 处理分析日志(nginx,syslog)
    Elasticsearch 负载均衡集群
    Elasticsearch REST API小记
    ELK 安装配置
    ELK 安装配置
  • 原文地址:https://www.cnblogs.com/shengwang/p/11312741.html
Copyright © 2020-2023  润新知