验证二叉查找树-LintCode

来源:互联网 发布:在线字体识别软件 编辑:程序博客网 时间:2024/06/01 15:43

给定一个二叉树,判断它是否是合法的二叉查找树(BST)
一棵BST定义为:
节点的左子树中的值要严格小于该节点的值。
节点的右子树中的值要严格大于该节点的值。
左右子树也必须是二叉查找树。
一个节点的树也是二叉查找树。
样例
一个例子:
这里写图片描述

#ifndef C95_H#define C95_H#include<iostream>#include<vector>using namespace std;class TreeNode{public:    int val;    TreeNode *left, *right;    TreeNode(int val){        this->val = val;        this->left = this->right = NULL;    }};class Solution {public:    /**    * @param root: The root of binary tree.    * @return: True if the binary tree is BST, or false    */    vector<TreeNode*> v;    bool isValidBST(TreeNode *root) {        // write your code here        if (root == NULL)            return true;        if (root->left == NULL || root->right == NULL)            return true;        inorder(root);        for (int i = 0; i < v.size() - 1; ++i)        {            if (v[i]->val >= v[i + 1]->val)            {                return false;                break;            }        }        return true;    }    void inorder(TreeNode* root)    {        if (root != NULL)        {            inorder(root->left);            v.push_back(root);            inorder(root->right);        }    }};#endif
原创粉丝点击