设计一个算法 ,判断给定的二叉树是否为二叉排序树 ,假设二叉排序树已经存储在二叉链表存储结构中,树节点个数为n,节点值为int型。
(1)给出基本设计思想
(2)根据设计思想,采用c或c++语言描述算法,并在关键之处给出注释 。
(3)分析算法的时间复杂度和空间复杂度
这道题我第一次做的时候写的代码如下,
int judge(BNode *bt)
{
if (bt==NULL)
return 1 ;
else {
if(bt->lchild->data<bt->data&&bt->rchild-data>bt->data){
return judge(bt->lchild)*judge(rchild);
}
return 0;
}
}
这段代码错误,,加入出现这样一种情况,也会认为是正确的。
35
23 57
17 89
这个时候23的左子树小于它,他的右子树也大于它,但是他并不是一颗二叉排序树 ,
因为二叉树左子树所有的点都应该小于根,对于35来说,89属于它的左子树,但是89>35,不满足二叉树定义,所以我