2015年大二上-数据结构-查找-1-(4)-是否为二叉排序树
来源:互联网 发布:js定时刷新 编辑:程序博客网 时间:2024/05/23 12:48
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2016年3月4日*版本号:v1.0**问题描述:是否二叉排序树*输入描述:二叉树*输出描述:是否二叉排序树*/#include <stdio.h>#include<malloc.h>#define MaxSize 100typedef int KeyType;typedef char InfoType[10];typedef struct node{ KeyType key; InfoType data; struct node *lchild,*rchild;} BSTNode;int path[MaxSize]; //全局变量,用于存放路径int InsertBST(BSTNode *&p,KeyType k) //在p所指向的二叉排序树中,插入值为k的节点{ if(p==NULL) { p=(BSTNode *)malloc(sizeof(BSTNode)); p->key=k; p->lchild=p->rchild=NULL; return 1; } else if(k==p->key) return 0; else if(k<p->key) InsertBST(p->lchild,k); else InsertBST(p->rchild,k);}BSTNode *CreateBST(KeyType A[],int n) //由有n个元素的数组A,创建一个二叉排序树,返回BST树根结点指针{ BSTNode *bt=NULL; int i=0; while(i<n) { InsertBST(bt,A[i]); ++i; } return bt;}void DispBST(BSTNode *bt) //输出一棵排序二叉树{ if(bt!=NULL) { printf("%d",bt->key); if(bt->lchild!=NULL || bt->rchild!=NULL) { printf("("); DispBST(bt->lchild); if(bt->rchild!=NULL) printf(","); DispBST(bt->rchild); printf(")"); } }}/*int JudgeBST(BSTNode *bt)为判断一个树是否为排序二叉树设计的算法的实现*/KeyType predt=-32767; //predt为全局变量,保存当前节点中序前趋的值,初值为-∞int JudgeBST(BSTNode *bt) //判断bt是否为BST{ int b1,b2; if(bt==NULL) return 1; else { b1=JudgeBST(bt->lchild); if(b1==0 || predt>=bt->key) return 0; predt=bt->key; b2=JudgeBST(bt->rchild); return b2; }}int main(){ BSTNode *bt; int a[]= {43,91,10,18,82,65,33,59,27,73},n=10; printf("创建排序二叉树:"); bt=CreateBST(a,n); DispBST(bt); printf("\n"); printf("bt%s\n",(JudgeBST(bt)?"是一棵BST":"不是一棵BST")); bt->lchild->rchild->key = 30; //搞个破坏! printf("修改后的二叉树:"); DispBST(bt); printf("\n"); printf("bt%s\n",(JudgeBST(bt)?"是一棵BST":"不是一棵BST")); return 0;}
运行结果:
0 0
- 2015年大二上-数据结构-查找-1-(4)-是否为二叉排序树
- 2015年大二上-数据结构-查找-1-(3)-二叉排序树
- 2015年大二上-数据结构-查找-1-(2)-分块查找
- 2015年大二上-数据结构-查找-2-(1)-HashTable
- 2015年大二上-数据结构-查找-1-(4)-二叉树排序树中查找的路径
- 2015年大二上-数据结构-查找-1-(1)-线性表的折半查找
- 【数据结构 是否为二叉排序树】
- 2015年大二上-数据结构-栈(4)- 数制转换
- 2015年大二上-数据结构-队列(4)- 队列数组
- 2015年大二上-数据结构-串(4)- 字符串加密
- 2015年大二上-数据结构-图-2-(4)-Floyd算法
- 2015年大二上-数据结构-内部排序-(4)-快速排序
- 2015年大二上-数据结构-链表(1)-建立单链表
- 2015年大二上-数据结构-图-2-(1)-Prim算法
- 2015年大二上-数据结构-查找-2-(2)-用哈希法组织关键字
- 2015年大二上-数据结构-查找-2-(3)-B-树的基本操作
- 2015年大二上-数据结构-图-1-(4)-利用遍历思想求解图问题(1)
- 2015年大二上-数据结构-图-1-(4)-利用遍历思想求解图问题(2)
- 10分钟掌握XML、JSON及其解析
- GXT
- 37- 题目1015:还是A+B
- bzoj1016【最小生成树计数】
- 翻译 Cg Program in Unity - 1.3 Debug (二)
- 2015年大二上-数据结构-查找-1-(4)-是否为二叉排序树
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
- 微信:实现 pc 端 扫描二维码登陆 的误区
- C++中typedef struct和struct的用法
- uva 10566 二分
- C/C++通过gSoap发布webservice接口,供ASP.Net网站工程调用
- TextView/EditText各种各样的效果
- 安卓多线程编程系列4:使用message的几种不同方式(不同的构造方法和使用方式)
- python 数据类型