sourcecode

Sunday, December 30, 2012

Validate Binary Search Tree


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 {
    vector<int> v;
    void inOrder(TreeNode *root){
        if (!root) return;
        inOrder(root->left);
        v.push_back(root->val);
        inOrder(root->right);
        return;
    }
public:
    bool isValidBST(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        v.clear();
        inOrder(root);
        for(int ii = 1; ii < v.size(); ++ii){
            if (v[ii] <= v[ii-1]) return false;
        }
        return true;
    }
};

No comments: