设计一个算法,判断给定的一棵二叉树是否是二叉排序树(二叉树的所有关键字均为正整数)

原创 2015年07月09日 17:12:42

思想:二叉排序树来说,其中序遍历序列为一个递增有序序列,因此,对给定的二叉树进行中序遍历,如果始终能保持前一个值比后一个值小,则说明该二叉树是一棵二叉排序树。算法如下:

KeyType predt=0;//predt为全局变量,保存当前节点中序前趋的值,初值为最小值

int judgeBST(BSTNode *bt)

{

//返回1表示是一颗二叉排序树,返回0表示不是

int b1,b2;

if(bt==NULL)

 return 1;

else

{

b1=judgeBST(bt->lchild);//判断左子树

if(b1==0||predt>=bt->key)

  return 0;

predt=bt->key;//保存当前节点的关键字

b2=judgeBST(bt->rchild);//判断右子树

return b2;

}

}

注意:若一个二叉树的中序序列是一个有序序列,则该二叉树一定是一棵二叉排序树。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

判别二叉树是否为二叉排序树

设二叉树用二叉链表表示,且每个结点的键值互不相同,请编写判别该二叉树是否为二叉排序树的非递归算法。 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均...

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

//判断一棵二叉树是不是二叉排序树 //思路:二叉排序树的特点是,若左子树非空,则左子树上结点的值均小于根结点的值; //若右子树非空,则右子树上结点的值均大于根结点的值。所以根据这一特点,可以看出 ...

判断给定的二叉树是否为二叉排序树

思路:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。递归遍历就可以了,反正就是左孩子的k...

判断一棵树是否为二叉排序树的两种方法

一、使用先根遍历,判断大小关系是否正确:t->lchild->valuevaluerchild->value转自:http://blog.pfan.cn/boxer/4814.htmlbool Jud...

一棵排序二叉树,令 f=(最大值+最小值)/2,设计一个算法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。

#include "stdafx.h" #include #include #include using namespace std; struct Nod...

14、一棵排序二叉树,令 f=(最大值+最小值)/2, 设计一个算法,找出距离f值最近、大于f值的结点。

/************************************************************************/ /*14、一棵排序二叉树,令 f=(最大值+最小值...

判断一棵树是否是完全二叉树

【题目】 有一棵二叉树,请设计一个算法判断它是否是完全二叉树。 给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。 【分析】完全二叉树树...

判断一棵树是否是完全二叉树

这道题可以看作是层序遍历的变形。在二叉树的层序遍历中,我们借助一个数据结构队列,根据其先进先出的性质,实现层序遍历。可以定义一个flag标志位,一旦遇到空节点,标志位生效。

~判断一棵树是否是完全二叉树~

判断一棵树是否是完全二叉树

day14之判断一个节点是否在一棵二叉树中+判断一颗二叉树是是否是另一颗树的子树

判断一个节点是否在一棵二叉树中 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)