`
444878909
  • 浏览: 639662 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

判断一棵二叉树是否是二叉排序树,可以通过中序遍历来检查,为此要设置一个指针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);

}

}


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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics