您的位置:首页 > 其它

Validate Binary Search Tree 二叉搜索树的合法判断

2015-04-24 21:27 543 查看


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(root==NULL)
            return true;
        if(root->left)
        {
         TreeNode *p=root->left;
          while(p->right)
            p=p->right;
          if(p->val>=root->val)
            return false;
        }
        if(root->right)
        {
          TreeNode *p=root->right;
          while(p->left)
            p=p->left;
          if(p->val<=root->val)
            return false;
        } 
        bool left,right;
        left=isValidBST(root->left);
        right=isValidBST(root->right);
        return left&&right;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐