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

原创 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;

}

}

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

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

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

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

编写判断给定二叉树是否为二叉排序树的函数

#include "stdafx.h" #include #include using namespace std; struct Node { int element; Node *le...

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

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

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

#include #include typedef struct node { int data; struct node *lchild, *rchild; }Bitree; Bitr...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【算法题】如何判断一个二叉树是平衡二叉树

题目:如何判断一个二叉树是平衡二叉树 定义: 平衡二叉树(AVL):1、空二叉树是AVL树;                                        2、如果T是一颗非空的二叉搜...

判定一棵二叉树是否是二叉搜索树

问题 给定一棵二叉树,判定该二叉树是否是二叉搜索树(Binary Search Tree)? 解法1:暴力搜索 首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的...

判断一棵树是否为满二叉树

首先,我们要知道什么是满二叉树。一个深度为k,节点个数为 2^k - 1 的二叉树为满二叉树。这个概念很好理解。 那么,我们要怎么判断一棵树是否为满二叉树呢? 思路:在层序遍历的过程中,找到第一个...

二叉树采用二叉链表存储,设计算法判断给定的二叉树是否是一棵完全二叉树,采用先进先出的队列。

#include #include typedef struct biTree { //二叉树结构 char data1; struct biTree *lchild,*rchild; }b...

判断二叉树是否为平衡树

平衡二叉树给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 先求左子树和右子树的最大深度,然后判断是否相差大于1,如...
  • zwhlxl
  • zwhlxl
  • 2015年08月12日 06:49
  • 1148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计一个算法,判断给定的一棵二叉树是否是二叉排序树(二叉树的所有关键字均为正整数)
举报原因:
原因补充:

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