题解 | #二叉搜索树和完全二叉树判断#
判断一棵二叉树是否为搜索二叉树和完全二叉树
http://www.nowcoder.com/practice/f31fc6d3caf24e7f8b4deb5cd9b5fa97
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
//完全二叉树判断,层次遍历过程中,如果出现了空,则后面的所有值都必须为空.
class Solution {
public:
/**
*
* @param root TreeNode类 the root
* @return bool布尔型vector
*/
int temp=-99999;
bool ans1=true;
void inorder(TreeNode* root)
{
if(root==NULL)
return ;
inorder(root->left);
if(temp<root->val)
{
temp=root->val;
}else{
ans1=false;
}
inorder(root->right);
}
bool levelorder(TreeNode* root)
{
queue<TreeNode*> q;
q.push(root);
while (q.front()) {
TreeNode* tmp = q.front();
q.pop();
q.push(tmp->left);
q.push(tmp->right);
}
while(q.size()&&!q.front())
{
q.pop();
}
return q.empty();
}
vector<bool> judgeIt(TreeNode* root) {
// write code here
vector<bool> v;
inorder(root);
v.push_back(ans1);
v.push_back(levelorder(root));
return v;
}
};