【程序员面试金典】检查一棵二叉树是否为二叉查找树。

题目描述

请实现一个函数,检查一棵二叉树是否为二叉查找树。

给定树的根结点指针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
        //只要每个结点保证自己的左子结点的值以及左子结点的右子结点的值小于自己的值,自己的右子结点的值大于自己的值就ok
        if(root==NULL)
            return true;
         
        if(root->left != NULL)
        {
            if(root->left->val > root->val)
                return false;
            if(root->left->right!=NULL&&root->left->right->val>root->val)
                return false;
        }
         
        if(root->right!=NULL&&root->right->val<root->val)
            return false;
             
        return checkBST(root->left) && checkBST(root->right);
    }
};

猜你喜欢

转载自blog.csdn.net/hellozex/article/details/81141253