zoukankan      html  css  js  c++  java
  • [LeetCode_98]Validate Binary Search Tree

    题目链接

    https://leetcode.com/problems/validate-binary-search-tree/

    题意

    判断给定树是否是BST

    思路

    根据定义判断。递归。

    代码

    class Solution {
    public:
        bool isValidBST(TreeNode* root) {
            if(!root){return true;}
            else{
                return isBST(root)->validBST;
            }
        }
        
    private:
        struct TreeMes{
            bool validBST;
            int max;
            int min;
        };
        
        TreeMes* isBST(TreeNode* root){
            TreeMes *treeMes=new TreeMes;
            if(!root->left&&!root->right){
                treeMes->max=root->val;
                treeMes->min=root->val;
                treeMes->validBST=true;
                return treeMes;
            }
            else if(!root->left){
                TreeMes *rTreeMes=isBST(root->right);
                if(rTreeMes->validBST&&(rTreeMes->min>root->val)){
                    treeMes->min=root->val;
                    treeMes->max=rTreeMes->max;
                    treeMes->validBST=true;
                }
                else{treeMes->validBST=false;}
                delete rTreeMes;
                return treeMes;
            }
            else if(!root->right){
                TreeMes *lTreeMes=isBST(root->left);
                if(lTreeMes->validBST&&(lTreeMes->max<root->val)){
                    treeMes->max=root->val;
                    treeMes->min=lTreeMes->min;
                    treeMes->validBST=true;
                }
                else{treeMes->validBST=false;}
                delete lTreeMes;
                return treeMes;
            }
            else{
                TreeMes *lTreeMes=isBST(root->left);
                TreeMes *rTreeMes=isBST(root->right);
                if(lTreeMes->validBST&&(lTreeMes->max<root->val)&&rTreeMes->validBST&&(rTreeMes->min>root->val)){
                    treeMes->min=lTreeMes->min;
                    treeMes->max=rTreeMes->max;
                    treeMes->validBST=true;
                }
                else{treeMes->validBST=false;}
                delete lTreeMes;
                delete rTreeMes;
                return treeMes;
            }
        }
    };
    
  • 相关阅读:
    统计数据持久化
    缓存层的实现
    C++语法疑点
    为什么需要定义虚的析构函数?
    C++ shared_ptr deleter的实现
    条件变量
    ubuntu  输入时弹出剪切板候选项
    leetcode Bitwise AND of Numbers Range
    C/C++ 字符串 null terminal
    C++ inline weak symbol and so on
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/10316365.html
Copyright © 2011-2022 走看看