zoukankan      html  css  js  c++  java
  • 【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);
        }
    };
  • 相关阅读:
    GlusterFS 配置及使用
    zabbix-监控Linux服务器
    ansible安装及使用
    使用ansible 完成yum安装lamp环境
    mysql基础
    shell基础
    shell
    Javascript动画效果(四)
    Javascript动画效果(三)
    Javascript动画效果(二)
  • 原文地址:https://www.cnblogs.com/shengwang/p/11312741.html
Copyright © 2011-2022 走看看