Validate Binary Search Tree

来源:互联网 发布:深圳古月网络 编辑:程序博客网 时间:2024/06/05 14:27

方案一:本方法,先遍历左子树,然后又子树。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private: bool isvalid(TreeNode *node,long long lnum,long long rnum)    {         if(node==NULL)            return true;        if(node->left!=NULL)        {            if((node->left->val<node->val)&&(node->val>lnum)            &&(node->val<rnum)&&isvalid(node->left,lnum,node->val))            {                if(node->right!=NULL)                {                    return (node->right->val>node->val)&&(node->val>lnum)                    &&(node->val<rnum)&&isvalid(node->right,node->val,rnum);                }                if ((node->right==NULL)&&((node->val<=lnum)||(node->val>=rnum)))                    return false;                else return true;            }            else return false;        }        if((node->left==NULL)&&((node->val<=lnum)||(node->val>=rnum)))            return false;                    if(node->right!=NULL)                {                    return (node->right->val>node->val)&&(node->val>lnum)                    &&(node->val<rnum)&&isvalid(node->right,node->val,rnum);                }        if ((node->right==NULL)&&((node->val<lnum)||(node->val>rnum)))                    return false;        else return true;                  }public:    bool isValidBST(TreeNode *root) {        return isvalid(root,LONG_LONG_MIN,LONG_LONG_MAX);    }};
参考网上的答案:

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private: bool isvalid(TreeNode *node,long long lnum,long long rnum)    {         if(node==NULL)            return true;         return (node->val>lnum)&&(node->val<rnum)&&isvalid(node->left,lnum,node->val)&&         isvalid(node->right,node->val,rnum);    }public:    bool isValidBST(TreeNode *root) {        return isvalid(root,LONG_LONG_MIN,LONG_LONG_MAX);    }};

int型的最大值为INT_MAX(2147483647),为了将最大值包含在内,定义long long型的整数。



0 0
原创粉丝点击