/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类 the root
* @return bool布尔型vector
*/
vector<bool> judgeIt(TreeNode* root) {
// write code here
return {isSearchTree(root,INT_MIN,INT_MAX),isCompletedTree(root)};
}
bool isCompletedTree(TreeNode* root)
{
if(root == nullptr)
return true;
if(root->left && root->right == nullptr)
return isCompletedTree(root->left);
if(root->left == nullptr && root->right)
return false;
return isCompletedTree(root->left) && isCompletedTree(root->right);
}
bool isSearchTree(TreeNode *root, int left, int right)
{
if(root == nullptr)
return true;
if(root->val < left || root->val > right)
return false;
return isSearchTree(root->left,left,root->val) && isSearchTree(root->right, root->val,right);
}
};