是否同一棵搜索树
时间:2019-02-17
本文章向大家介绍是否同一棵搜索树,主要包括是否同一棵搜索树使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<stdio.h>
#include<stdlib.h>
#define bool int
#define false 0
#define true 1
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree Insert( BinTree BST, ElementType X );
BinTree Delete( BinTree BST, ElementType X );
Position Find( BinTree BST, ElementType X );
Position FindMin( BinTree BST );
Position FindMax( BinTree BST );
Position buildSearchTree(BinTree BST,ElementType X);
bool compareSearchTree(BinTree masterTree,BinTree branchTree);
void cleanTree(BinTree BST);
int main()
{
int N,L;
int temp;
scanf("%d",&N);
if(N == 0)
return 0;
scanf("%d",&L);
BinTree masterTree = NULL;
BinTree branchTree = NULL;
while(N != 0)
{
for(int i =0;i < N;i++)
{
scanf("%d",&temp);
masterTree = Insert(masterTree,temp);
}
for(int i = 0;i < L;i++)
{
for(int i = 0;i < N;i++)
{
scanf("%d",&temp);
branchTree = Insert(branchTree,temp);
}
if(compareSearchTree(masterTree,branchTree))
printf("Yes\n");
else
printf("No\n");
cleanTree(branchTree);
branchTree = NULL;
}
cleanTree(masterTree);
masterTree = NULL;
scanf("%d",&N);
if(N == 0)
return 0;
scanf("%d",&L);
}
return 0;
}
void cleanTree(BinTree BST)
{
BinTree temp;
while(BST)
{
BST = Delete(BST,FindMin(BST)->Data);
}
}
bool compareSearchTree(BinTree masterTree,BinTree branchTree)
{
bool isIdentical ;
if(masterTree == NULL&&branchTree == NULL)
isIdentical = true;
else if((masterTree != NULL&&branchTree == NULL) || (masterTree == NULL&&branchTree != NULL) ||(masterTree->Data != branchTree->Data))
isIdentical = false;
else
{
isIdentical = compareSearchTree(masterTree->Left,branchTree->Left)&&compareSearchTree(masterTree->Right,branchTree->Right);
}
return isIdentical;
}
Position Find( BinTree BST, ElementType X ){
if (BST==NULL) return BST;
if (X==BST->Data) return BST;
if (X>BST->Data) return Find(BST->Right,X);
if (X<BST->Data) return Find(BST->Left,X);
}
Position FindMin( BinTree BST ){
if (BST){
while (BST->Left!=NULL){
BST=BST->Left;
}
}
return BST;
}
Position FindMax( BinTree BST ){
if (BST){
while (BST->Right!=NULL){
BST=BST->Right;
}
}
return BST;
}
BinTree Insert( BinTree BST, ElementType X ){
if (BST==NULL){
BST=(struct TNode *)malloc(sizeof(struct TNode));
BST->Data=X;
BST->Left=BST->Right=NULL;
return BST;
}
if (X<BST->Data) BST->Left=Insert(BST->Left,X);
if (X>BST->Data) BST->Right=Insert(BST->Right,X);
return BST;
}
BinTree Delete( BinTree BST, ElementType X ){
Position Tmp;
if(!BST) printf("Not Found\n");
else {
if( X < BST->Data)
BST->Left = Delete(BST->Left, X);
else if(X > BST->Data )
BST->Right = Delete(BST->Right , X);
else {
if(BST->Left && BST->Right) {
Tmp=FindMin(BST->Right);
BST->Data = Tmp->Data;
BST->Right=Delete(BST->Right,BST->Data);
}else {
Tmp = BST;
if(!BST->Left) BST = BST->Right;
else if(!BST->Right) BST = BST->Left;
free(Tmp);
}
}
}
return BST;
}
- 利用ASP.NET SiteMap生成与Bootstrap"兼容"菜单
- 埃隆·马斯克强烈推荐的5本书,看完之后他开始改变世界
- 算法:AOE网(Activity On edge Network)与关键路径简介
- ASP.NET Core的配置(4):多样性的配置来源[中篇]
- ASP.NET MVC的Razor引擎:RazorViewEngine
- 算法:求解AOE网的关键路径
- 编程小技巧:多态原理
- ASP.NET Core的配置(4):多样性的配置来源[下篇]
- 数据结构 图
- ASP.NET Core的配置(5):配置的同步[ 实例篇]
- TensorFlow 深度学习笔记 卷积神经网络
- 利用EntLib授权机制实现对ASP.NET页面的自动授权
- ASP.NET Core的配置(5):配置的同步[设计篇]
- 详解Redis内部运作机制
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解 MAC/Linux Vi配置环境变量及Java环境变量配置
- 扒开DMA映射的内裤
- 如何理解与识别Linux中的文件类型
- ubantu 16.4下Hadoop完全分布式搭建实战教程
- Linux定时删除日志的简单实现方法
- ubuntu如何安装中文输入法
- Ubuntu18.04安装Python虚拟环境
- linux下查看so或可执行程序的依赖库
- Linux中crontab输出重定向不生效问题的解决方法
- Ubuntu中安装MySQL更改默认密码的步骤详解
- linux下用csplit命令分割文件的方法示例
- Linux基础命令之mktemp详解
- CentOS7设置jar应用程序开机启动的方法
- linux jexus服务设置开机启动
- linux如何利用crontab添加定时任务详解