判断一颗二叉树是否是二叉排序树

题目:编写一个算法判断给定的二叉树是否是二叉排序树

分析:
        二叉排序树的中序序列是升序序列,我们可以根据这一特性来进行判定

typedef struct node {
	int data;
	node *left, *right;
}Tree;
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
Tree *create(Tree *T) {//先序创建一颗二叉树
	int data;
	printf("请输入当前节点值:data=");
	scanf("%d", &data);
	getchar();
	if (data != -1) {
		T = (Tree *)malloc(sizeof(Tree));
		T->data = data;
		T->left = NULL;
		T->right = NULL;
		T->left = create(T->left);
		T->right = create(T->right);
	}
	return T;
}
bool isSortTree(Tree *T) {
	static int min = -32768;//最开始设定min为最小值,确保第一个节点能够进行下去
	static bool flag = true;//作为是否是排序的标记,采用静态变量,不然每次都会初始化
	if (T) {
		isSortTree(T->left);
		if (T->data < min)
			flag = false;
		else
			min = T->data;
		isSortTree(T->right);
	}
	return flag;
}
int main() {
	//先创建一颗二叉树
	Tree *T = (Tree *)malloc(sizeof(Tree *));
	T = create(T);
	isSortTree(T) ? printf("是二叉排序树") : printf("不是二叉排序树");
	return 0;
}

 人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看、好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好。 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北街学长

你的鼓励使我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值