判断一棵二叉树是否是二叉排序树
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);
}
}
这是一个递归过程,有时间写一个非递归的程序
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);
}
}
这是一个递归过程,有时间写一个非递归的程序
相关文章推荐
- 【面试】判断一棵二叉树是否为二叉排序树
- 判断一棵二叉树是否是二叉排序树
- 设计一个算法,判断给定的一棵二叉树是否是二叉排序树(二叉树的所有关键字均为正整数)
- 判断一棵二叉树是否为二叉排序树
- 以二叉链表的方式创建一棵二叉树,并以非递归算法中序输出;计算二叉树的繁茂度,并判断二叉树是否为完全二叉树
- 【二叉树】判断一棵二叉树是否是平衡二叉树/求一棵二叉树的镜像/对称的二叉树
- 如何只遍历一次判断一棵二叉树是否为平衡二叉树
- 剑指offer 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 判断一棵二叉树的镜像是否为其自己
- 判断给定的二叉树是否为二叉排序树
- 剑指Offer 面试题28:判断一棵二叉树是否镜对称 Java代码实现
- leetcode_101. Symmetric Tree 对称树, 判断一棵二叉树是否对称,递归方法
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 如何判断一棵二叉树是否是平衡二叉树(AVL)
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- java、python语言判断一棵二叉树是否对称
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 判断二叉树是否为二叉排序树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树