/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
private:
vector<int> inres;
public:
/**
*
* @param root TreeNode类 the root
* @return bool布尔型vector
*/
vector<bool> judgeIt(TreeNode* root) {
// write code here
return {panduan1(root), panduan2(root)};
}
void inorder(TreeNode* root){
if(root == nullptr){
return;
}
inorder(root->left);
inres.push_back(root->val);
inorder(root->right);
}
bool panduan1(TreeNode* root){
if(root == nullptr){
return true;
}
inorder(root);
for(int i=1; i<inres.size(); i++){
if(inres[i] < inres[i-1]){
return false;
}
}
return true;
}
bool panduan2(TreeNode* root){
if(root == nullptr){
return true;
}
queue<TreeNode*> Q;
Q.push(root);
while(!Q.empty()){
auto node = Q.front();
Q.pop();
if(node == nullptr){
break;
}
Q.push(node->left);
Q.push(node->right);
}
while(!Q.empty()){
auto node = Q.front();
Q.pop();
if(node != nullptr){
return false;
}
}
return true;
}
};