98. Validate Binary Search Tree

来源:互联网 发布:2017淘宝规则 编辑:程序博客网 时间:2024/06/15 18:33

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.
/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void midorder(TreeNode *root,vector<int>& v)    {    if(root==NULL) return;    midorder(root->left,v);    v.push_back(root->val);    midorder(root->right,v);    }    bool isValidBST(TreeNode* root) {    vector<int> v;midorder(root,v);    bool isValid=true;for (int i = 1; i < v.size(); ++i){    if (v[i-1]>=v[i]) {            isValid=false; break; } } return isValid;    }};


原创粉丝点击