二叉排序树要求:
根节点的数值必须大于等于左子树的结点数值,同时小于等于右子树的结点数值
采用层序遍历思想,对每个结点的左右子节点的数值进行判断
int JudgeBST(BiTree T){
BiTNode *p = T;
if(!T) return 0;
InitQueue(Q);
EnQueue(Q,p);
while(!isEmpty(Q)){
DeQueue(Q,p);
if(p->lchild){
if(p->lchild->data > p->data){
return false;
}else{
EnQueue(Q,p->lchild);
}
}else if(p->rchild){
if(p->rchild->data < p->data){
return false;
}else{
EnQueue(Q,p->rchild);
}
}
}
return true;
}