二叉搜索树的判断是一个经典题目。
函数IsBST
须判断给定的T
是否二叉搜索树,即满足如下定义的二叉树:
定义:一个二叉搜索树是一棵二叉树,它可以为空。如果不为空,它将满足以下性质:
- 非空左子树的所有键值小于其根结点的键值。
- 非空右子树的所有键值大于其根结点的键值。
- 左、右子树都是二叉搜索树。
如果T
是二叉搜索树,则函数返回true,否则返回false。
存储结构:typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
输出:Yes
代码实现:BinTree pre=NULL;
bool IsBST ( BinTree T )
{
if(!T) return 1;
if(!IsBST(T->Left)) return 0;
if(pre)
{
if(pre->Data>=T->Data)
return 0;
}
pre=T;
if(!IsBST(T->Right)) return 0;
return 1;
}