leetcode-Validate Binary Search Tree

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.
/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isValidBST(TreeNode *root) 
    {
        if(NULL==root)
            return true;
        TreeNode *p,*q;
        if(isValidBST(root->left)&&isValidBST(root->right))
        {
            p = root->left;
            q = root->right;
            if(NULL!=p)
                while(p->right)p=p->right;
            if(NULL!=q)
                while(q->left)q=q->left;
            if(p&&p->val>=root->val)return false;
            if(q&&q->val<=root->val)return false;
            return true;
        }
        return false;
    }
};


posted @ 2014-06-21 21:32  海滨银枪小霸王  阅读(132)  评论(0编辑  收藏  举报