判断二叉树是否为二叉排序树
来源:互联网 发布:java入门书籍推荐知乎 编辑:程序博客网 时间:2024/06/05 01:19
#include <stdio.h> #include <stdlib.h> typedef struct node{int data;struct node *lchild, *rchild;}Bitree;Bitree *B[100];Bitree *CreateBiTree(){int num, i, n;Bitree *t, *s;t = NULL;printf("建立二叉树(-1表示为虚结点,-2表示输入结束):/n");num = 0;scanf("%d", &n);while (n != -2){s = (Bitree *)malloc(sizeof(Bitree));s->data = n;s->lchild = s->rchild = NULL;num++;if (!t)t = s;B[num] = s;scanf("%d", &n);}for (i = 1; i <= num; i++){if (B[i]->data != 1){if (2 * i <= num && B[2 * i]->data != -1)B[i]->lchild = B[2 * i];if (2 * i + 1 <= num && B[2 * i + 1]->data != -1)B[i]->rchild = B[2 * i + 1];}}return t;}int IsSearchTree(const Bitree *t) //递归遍历二叉树是否为二叉排序树 {if (!t) //空二叉树情况 return 1;else if (!(t->lchild) && !(t->rchild)) //左右子树都无情况 return 1;else if ((t->lchild) && !(t->rchild)) //只有左子树情况 {if (t->lchild->data > t->data)//左子树的值比其父节点大,返回0不是二叉排序树return 0;elsereturn IsSearchTree(t->lchild);//递归往下找}else if ((t->rchild) && !(t->lchild)) //只有右子树情况 {if (t->rchild->data < t->data)//右子树的值比其父节点值小,返回0不是二叉排序树return 0;elsereturn IsSearchTree(t->rchild);//递归往下找}else //左右子树全有情况 {if ((t->lchild->data > t->data) || (t->rchild->data < t->data))//左子树的值比其父节点大或者右子树的值比其父节点值小,返回0不是二叉排序树return 0;elsereturn (IsSearchTree(t->lchild) && IsSearchTree(t->rchild));//递归往下找}}int main(void){int flag = 0;Bitree *tree;tree = CreateBiTree();flag = IsSearchTree(tree);if (flag)printf("这棵树是二叉排序树!/n");elseprintf("这棵树不是二叉排序树!/n");system("pause");return 0;}
建立二叉树(-1表示为虚结点,-2表示输入结束):/n
8 5 10 3 6 9 11 -2
这棵树是二叉排序树!/n请按任意键继续. . .
建立二叉树(-1表示为虚结点,-2表示输入结束):/n
12 23 2 21 12 12 1 123 32 1 12 21
-2
这棵树不是二叉排序树!/n请按任意键继续. . .
1 0
- 判断二叉树是否为二叉排序树
- 判断二叉树是否为二叉排序树
- 判断二叉树是否为二叉排序树
- 判断给定的二叉树是否为二叉排序树
- 编写判断给定二叉树是否为二叉排序树的函数
- 判断给定的二叉树是否为二叉排序树
- 判断给定的二叉树是否为二叉排序树
- 判断一颗二叉树是否为二叉排序树
- 判断一棵二叉树是否为二叉排序树
- 判断某棵二叉树是否二叉排序树
- 判别二叉树是否为二叉排序树
- 判断一颗二叉树是否为二叉排序树(java实现)
- 判断一棵树是否为二叉排序树
- 判断一棵二叉树是否是二叉排序树
- 判断一棵二叉树是否是二叉排序树
- 判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
- 判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
- 判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
- jQuery中的自定义动画animate函数中的step基础的解释
- 使用repo下载studio源码
- Django模板路径
- 【策略回归】——对海龟法则的验证
- 矩形嵌套
- 判断二叉树是否为二叉排序树
- Android ViewPager和SlidingPaneLayout的滑动事件冲突处理方法(转载)
- Array(源自 mozilla developer network, 自带实例)
- Qt: MingW编译程序,crt2.o,crtbegin.o,crtend.o,No such file or directory
- HDU 4081 Qin Shi Huang's National Road System 次小生成树
- 面试题
- [C++算法]六种简单算法
- matlab---triplet loss
- eclipse idea 常用快捷键