前言
本题判断是否为二叉搜索树,定义如下
!!!超级注意!!!
只要是根节点左子树以及左子树的儿子,孙子,曾孙子,曾曾…不管是左边的还是右边的,都要满足,比根节点的值要小; 根节点的右子树同理。
so,敲的时候,不能只考虑相邻的根节点与左子树或右子树的大小关系;
不然就会和本菜鸡一样,一直不晓得自己哪里错了。。。
最后偷偷瞄了一眼,别银的code,奥!!!原来如此!!!
就一中序遍历,不过如此~爷就是想不到!切!
爷直接上代码,呸。 给爷们上代码~
bool flag=true;
int pre=-9999999;
void InOrderTraverse(BinTree T){
if(!T){
return;
}
InOrderTraverse(T->Left);
if(pre>=T->Data){
flag=false;
return;
}else{
pre=T->Data;
}
InOrderTraverse(T->Right);
}
bool IsBST ( BinTree T ){
if(!T){
return true;
}
InOrderTraverse(T);
return flag;
}