是否同一颗二叉树
来源:互联网 发布:淘宝上卖什么最火 编辑:程序博客网 时间:2024/06/05 23:34
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef structTreeNode *Tree;
typedef Tree Position;
struct TreeNode
{
ElementType Data;
Tree Left,Right;
int flag;
};
Tree Insert(Tree T,ElementType Data);
Tree MakeTree(int N);
int Judge(Tree T,int N);
int check(Tree T,int Data);
void Reset(Tree T);
void FreeTree(Tree T);
int main()
{
int N,L;
Tree T;
scanf("%d",&N);
while (N) {
scanf("%d",&L);
T = MakeTree(N);
for (int i=0; i<L; i++) {
if (Judge(T,N)) {
printf("Yes\n");
}else
{
printf("No\n");
}
Reset(T);
}
FreeTree(T);
scanf("%d",&N);
}
return0;
}
Tree Insert(Tree T,ElementType Data)
{
if (T ==NULL) {
T = (Tree)malloc(sizeof(structTreeNode));
T->Data = Data;
T->Left = T->Right =NULL;
T->flag =0;
}elseif (Data < T->Data) {
T->Left =Insert(T->Left, Data);
}elseif(Data > T->Data)
{
T->Right =Insert(T->Right, Data);
}
return T;
}
Tree MakeTree(int N)
{
Tree T =NULL;
int value;
for (int i=0; i<N; i++) {
scanf("%d",&value);
T = Insert(T, value);
}
return T;
}
int Judge(Tree T,int N)
{
int value =0;
int flag =0;
scanf("%d",&value);
if (value != T->Data) {
flag = 1;
}else{
T->flag =1;
}
for (int i=1; i<N; i++) {
scanf("%d",&value);
if ((!flag) && !check(T, value)) {
flag = 1;
}
}
if (flag) {
return0;
}else
{
return1;
}
}
int check(Tree T,int Data)
{
if (T->flag) {
if (Data < T->Data) {
returncheck(T->Left, Data);
}elseif(Data > T->Data)
{
returncheck(T->Right, Data);
}else
{
return0;
}
}else
{
if (Data == T->Data) {
T->flag =1;
return1;
}else
{
return0;
}
}
}
void Reset(Tree T)
{
if (T->Left) {
Reset(T->Left);
}
if (T->Right) {
Reset(T->Right);
}
T->flag =0;
}
void FreeTree(Tree T)
{
if (T->Left) {
FreeTree(T->Left);
}
if (T->Right) {
FreeTree(T->Right);
}
free(T);
}
- 是否同一颗二叉树
- 判断是否是同一颗二叉树
- 判断是否是同一颗二叉搜索树
- 是否同一棵二叉搜索树
- PTA-是否同一棵二叉搜索树
- 是否同一棵二叉搜索树
- 是否同一棵二叉搜索树
- 是否为同一棵二叉搜索树
- pat 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否是同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- Lniux命令大全
- 见山只是山 见水只是水——提升对继承的认识
- Surfer11汉化版安装与破解图文教程
- redmine安装redmine-wiki_graphviz_plugin插件
- 杭电 OJ 1408 盐水的故事
- 是否同一颗二叉树
- git 与 repo
- python 爬虫4:正则表达式介绍
- 解决Eclipse控制台中文乱码的问题。
- 错误笔记之Could not resolve placeholder 'jdbc.driver' in string value "${jdbc.driver}"
- 编译过程中提示 /usr/bin/ld: cannot find
- 防止深度学习网络过拟合的方法
- 简洁代码书写法则
- Java 实现数据库插入图片与查询显示图片