//判断二叉树是否是二叉排序树
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define Max 10
typedef struct treenode {
char data;
struct treenode* lchild, * rchild;
}treenode, * tree;
void creatTree(tree& t) {
char ch;
ch = getchar();
if (ch == '#') t = NULL;
else {
t = (treenode*)malloc(sizeof(treenode));
t->data = ch;
t->lchild = NULL;
t->rchild = NULL;
creatTree(t->lchild);
creatTree(t->rchild);
}
}
int c = -100;
int Judge(tree t) {
int b1, b2;
if (t == NULL)
return 1;
else { //z中序遍历 递归调用 b1b2判断;
b1=Judge(t->lchild);
if (b1 == 0 || c > t->data) {
return 0;
}
c = t->data;
b2=Judge(t->rchild);
return b2;
}
}
int main() {
tree t;
creatTree(t);
if (Judge(t)) {
printf("yes");
}
else {
printf("no");
}
return 0;
}
//DBA##C##E##;
int y=-200;
int judge_order(tree& t) {
int depl, depr;
if (t == NULL)
return 1;
else {
depl = judge_order(t->lchild);
if (y > depl || depl == 0)
return 0;
y = t->data;
depr = judge_order(t->rchild);
return depr;
}
}
// t
// t t
// t t t t
/判断二叉树是否是二叉排序树
于 2022-11-30 23:20:08 首次发布
该博客介绍了一个C语言实现的程序,用于判断给定的二叉树是否为二叉排序树。程序通过中序遍历递归调用来检查树的性质。此外,还提供了一个辅助函数用于检测树的顺序。程序通过读取字符输入构建二叉树,并输出结果('yes'或'no')来表明是否符合二叉排序树的条件。

1069

被折叠的 条评论
为什么被折叠?



