题目描述
请实现一个函数,检查一棵二叉树是否为二叉查找树。
给定树的根结点指针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
//中序遍历也可以
int a1;
int a2=INT_MIN;
if(root==NULL)
return true;
stack<TreeNode*> st;
TreeNode* p=root;
while(!st.empty()||p)
{
while(p)
{
st.push(p);
p=p->left;
}
if(!st.empty())
{
TreeNode* tmp=st.top();
st.pop();
p=tmp->right;
a1=a2;
a2=tmp->val;
if(a1>a2)
return false;
}
}
return true;
}
};