您的位置:首页 > 编程语言 > C语言/C++

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

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

    

    }

}

这是一个递归过程,有时间写一个非递归的程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C C++
相关文章推荐