标签:code https 特殊情况 null div 函数 返回 function cpp
本题要求实现函数,判断给定二叉树是否二叉搜索树。
bool IsBST ( BinTree T );
其中BinTree
结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
函数IsBST
须判断给定的T
是否二叉搜索树,即满足如下定义的二叉树:
定义:一个二叉搜索树是一棵二叉树,它可以为空。如果不为空,它将满足以下性质:
如果T
是二叉搜索树,则函数返回true,否则返回false。
#include <stdio.h>
#include <stdlib.h>
typedef enum { false, true } bool;
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree BuildTree(); /* 由裁判实现,细节不表 */
bool IsBST ( BinTree T );
int main()
{
BinTree T;
T = BuildTree();
if ( IsBST(T) ) printf("Yes\n");
else printf("No\n");
return 0;
}
/* 你的代码将被嵌在这里 */
Yes
No
中序遍历,判断结点是否比左子树中的最大值还大,如果是则满足,否则不满足。空树特殊情况。
代码:
bool IsBST ( BinTree T ) { if(T == NULL) return true; if(T -> Left && !IsBST (T -> Left)) return false; BinTree p = T -> Left; if(p) { while(p -> Right) p = p -> Right; if(T -> Data < p -> Data) return false; } if(T -> Right) return IsBST(T -> Right); else return true; }
习题4.3 是否二叉搜索树 (25 分) 浙大版《数据结构(第2版)》题目集
标签:code https 特殊情况 null div 函数 返回 function cpp
原文地址:https://www.cnblogs.com/8023spz/p/11872893.html