98. Validate Binary Search Tree两种方法对比

判断是否为二叉查找树的题,先给一种方法,可是过不去某个case

/**
 * 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 {
public:
//这种方法当test case为[-2147483648,null,2147483647]或[-2147483648]或[2147483647]时无法通过
    bool isValidBST(TreeNode* root) 
        return helper(root, INT_MIN, INT_MAX);
        
    }
    bool helper(TreeNode* root, int min, int max){
        if(root == NULL) return true;
        
        if(root->val <= min || root->val >= max)
            return false;
        return helper(root->left, min, root->val) && helper(root->right, root->val, max);
        
    }
};

换另外一种方法(In-order tranversal):

/**
 * 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 {
public:
    bool isValidBST(TreeNode* root) 
    {
        TreeNode* pre = NULL;
        return helper(root, pre);
        
    }
    bool helper(TreeNode* root, TreeNode* &pre){
        if(root == NULL) return true;
        if(!helper(root->left, pre)) return false;
        if(pre != NULL && pre->val >= root->val)
                return false;
        pre = root;
        return helper(root->right, pre);
        
    }
};

这题值得好好回味一下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,821评论 0 19
  • 一别之后,二三年永不见。四海为家,五谷穿肠酒唯伴。六月相识,翻山越岭迎七夕。八道轮回不再见。金陵城掩九分雪,十分感...
    隐身人的一年阅读 181评论 0 1
  • 昨天,侄女在写字桌跟前描红。这个三心二意的家伙,扭过头来问:“姑姑,你心里的小人是什么样的?” 这一下还把我给问住...
    遇见seeu阅读 1,240评论 0 1
  • 不知道从什么时候起,我家臭小子开始喜欢扯别人头发,扔东西,生气的时候吐口水,咬人,还打人。也许你会认为是因为我的纵...
    赵慧姿阅读 287评论 0 2