关闭

98. Validate Binary Search Tree

93人阅读 评论(0) 收藏 举报
分类:

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.

Example 1:

    2
   / \
  1   3
Binary tree [2,1,3], return true.

Example 2:

    1
   / \
  2   3

Binary tree [1,2,3], return false.

思路:这题有很多种解法, 参考http://www.cnblogs.com/grandyang/p/4298435.html。 这里只写了最基本的一种,就是根据BST的特点,根据左子树和右子树的范围来判断其是否合法。

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        return isValid(root, LONG_MIN, LONG_MAX); //注意这里用LONG_MIN和LONG_MAX,因为root->val可能非常大。
    }
    
    bool isValid(TreeNode *root, long long min, long long max)
    {
        if(!root) return true;
        if(root->val <= min || root->val >= max) return false;
        return isValid(root->left, min, root->val) && isValid(root->right, root->val, max);
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:68575次
    • 积分:0
    • 等级:
    • 排名:千里之外
    • 原创:166篇
    • 转载:8篇
    • 译文:0篇
    • 评论:5条
    最新评论