zoukankan      html  css  js  c++  java
  • 98. Validate Binary Search Tree

    错误解法

    class Solution {
    public:
        bool isValidBST(TreeNode* root) {
            if(root == NULL)
                return true;
            bool left = isValidBST(root->left);
            bool right = isValidBST(root->right);
            if(left == false || right == false)
                return false;
            if(root->left != NULL && root->left->val >= root->val)
                return false;
            if(root->right != NULL && root->val >= root->right->val)
                return false;
            return true;
        }
    };

    [10,5,15,null,null,6,20]这种情况没考虑到,即这个代码只考虑了当前节点小于左节点、大于右节点,没有递归考虑他的root节点

    https://www.cnblogs.com/grandyang/p/4298435.html

    思路:二叉搜索树中,每个节点的数必定小于一个数,大于一个数

    class Solution {
    public:
        bool isValidBST(TreeNode* root) {
            return isValid(root,LONG_MIN,LONG_MAX);
        }
        bool isValid(TreeNode* root,long left,long right){
            if(!root)
                return true;
            if(root->val <= left || root->val >= right)
                return false;
            return  isValid(root->left,left,root->val) && isValid(root->right,root->val,right);
        }
    };

    注意:如果使用INT_MIN、INT_MAX,在情况:[2147483647]会出现错误,超出了处理的范围,所以用long比较好

  • 相关阅读:
    UGUI 学习
    跳一跳
    推箱子_1
    坦克大战
    建筑保温(复习) 灭火救援设施(一)
    建筑平面布置与防火防烟分区(一)
    第五篇消防安全评估
    第三篇第三章自动喷水灭火系统(一)
    案例35:室内消火栓系统检查与维护保养案例分析(二)
    YAML语法
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10493370.html
Copyright © 2011-2022 走看看