前言
本题判断是否为二叉搜索树,定义如下 !!!超级注意!!! 只要是根节点左子树以及左子树的儿子,孙子,曾孙子,曾曾…不管是左边的还是右边的,都要满足,比根节点的值要小; 根节点的右子树同理。
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
;
}