如题 自用笔记 如有错误欢迎及时指正
所用存储结构与BST的基本操作见下文
https://blog.csdn.net/weixin_46127065/article/details/122471158
详见注释
const int INF = -2147483648;
//判定给定二叉树是否为BST
/*
初始化全局变量max为无穷小
树空时为bst true
否则递归判断左子树是否为bst isLeft保存
当isLeft为false或者 根节点关键字小于等于左子树关键字时 不是bst
否则递归判断右子树是否为bst isRight保存
返回isRight
*/
bool IsBST(BSTree T,DataType &MAX=INF){
//max初始化为负无穷 max在递归返回时保存了左子树
if(T==NULL){ //空树是BST
return true;
}
bool isLeft, isRight; //保存左右子树判定状态
isLeft = IsBST(T->lchild, MAX); //递归判左
if(!isLeft||T->key<=MAX){ //max大于等于当前结点 说明当前结点小于等于左子树关键字 不符合bst
return false;
}
MAX=T->key; //保存当前结点关键字 递归返回时 就是上一轮中左子树的关键字
isRight = IsBST(T->rchild, MAX);
return isRight;
}