题目描述
请实现一个函数,检查一棵二叉树是否为二叉查找树。
给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Checker {
public:
bool checkBST(TreeNode* root) {
// write code here
if(root==NULL) return true;
if(root->left && root->left->val > root->val)
return false;
if(root->left && root->left->right && root->left->right->val>root->val)
return false;
if(root->right && root->right->val < root->val)
return false;
return checkBST(root->left) && checkBST(root->right);
}
};