[LeetCode] Validate Binary Search Tree

来源:互联网 发布:小区网络监控设计方案 编辑:程序博客网 时间:2024/06/04 18:21

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • Both the left and right subtrees must also be binary search trees.

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

方法一

class Solution {public:    TreeNode *left;//记录左边的节点    TreeNode *right;//记录右边的节点    bool check(TreeNode *node){        if(node == NULL) return true;        bool b1 = check(node -> left);        left = right;        right = node;        if(left != NULL && left -> val >= right -> val) return false;//当左边的比右边的大则返回false        bool b2 = check(node -> right);        return b1 && b2;    }    bool isValidBST(TreeNode *root) {        left = NULL;        right = NULL;        return check(root);    }};
方法二

class Solution {public:    bool check(TreeNode *node,long long min,long long max){        if(node == NULL) return true;        return (node -> val > min && node -> val < max) && check(node -> left,min,node -> val)             && check(node -> right,node -> val,max);    }    bool isValidBST(TreeNode *root) {        return check(root,LONG_LONG_MIN,LONG_LONG_MAX);    }};



0 0
原创粉丝点击