判断一棵二叉树是否是二叉排序树

判断一棵二叉树是否是二叉排序树,可以通过中序遍历来检查,为此要设置一个指针pr指示二叉树中当前结点的中序直接前驱,每访问一个结点,就比较当前访问结点的关键值是否大于ptr所指结点的关键字值,如果遍历了所有结,各结点与其中序直接前驱点都 是后一个大于前一个,则为二叉排序树。



void binSearchTree(BSTree root,BSTree &ptr,int &bs){

//引用ptr是当前子树根结点root的前驱结点指针,开始时bs为1,如果bs为0则表示非二叉排序树
if(root!=NULL&&bs)
{
binSearchTree( root->lchild,ptr,bs);
if(ptr==NULL) {
ptr = root;
}else {
if(root->data>ptr->data)
{
ptr = root;
bs = 1;
} else bs = 0;
}
printf("the vlaue of ptr %d \n" ,ptr->data);
if(bs)binSearchTree( root->rchild,ptr,bs);

}

}


这是一个递归过程,有时间写一个非递归的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值