[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) {
        vector<int> InOrderVal;
        InOrderTraverse(root,InOrderVal);
        int len = InOrderVal.size();
        for(int i=1;i<len;i++){
         if(InOrderVal[i]<=InOrderVal[i-1])
             return false;
        }
        return true;
    }
private:
    void InOrderTraverse(TreeNode *p,vector<int> &res){


      if(p!=NULL){
          InOrderTraverse(p->left,res);
          res.push_back(p->val);
          InOrderTraverse(p->right,res);
      }
    }
};

 

posted @ 2014-08-06 11:04  Xylophone  Views(102)  Comments(0Edit  收藏  举报