设计一个算法 ,判断给定的二叉树是否为二叉排序树 ,假设二叉排序树已经存储在二叉链表存储结构中,树节点个数为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的左子树小于它,他的右子树也大

本文探讨了如何判断一个二叉树是否为二叉排序树的问题,通过分析错误示例,强调了二叉排序树的定义,并提供了一个正确的C语言实现。算法基于中序遍历,通过维护前驱节点值来确保递增顺序,从而判断二叉树性质。

1896

被折叠的 条评论
为什么被折叠?



