程序:

 1 #include <stdio.h>
2 #include <stdlib.h>
3 typedef struct TreeNode *Tree;
4 struct TreeNode{
5 int v;
6 Tree Left,Right;
7 int flag;
8 };
9 Tree NewNode(int V){
10 Tree T=(Tree)malloc(sizeof(struct TreeNode));
11 T->v = V;
12 T->Left = T->Right=NULL;
13 T->flag=0;
14 return T;
15 }
16 Tree Insert(Tree T,int V){
17 if(!T) T=NewNode(V);
18 else{
19 if(V>T->v)
20 T->Right = Insert(T->Right,V);
21 else
22 T->Left = Insert(T->Left,V);
23 }
24 return T;
25 }
26 //读数据建树T
27 Tree MakeTree(int N){
28 Tree T;
29 int i,V;
30 scanf("%d",&V);
31 T = NewNode(V);
32 for(i=1;i<N;i++){
33 scanf("%d",&V);
34 T=Insert(T,V);
35 }
36 return T;
37 }
38 //查找结点
39 int check(Tree T,int V){
40 if(T->flag){
41 if(V<T->v) return check(T->Left,V);
42 else if(V>T->v) return check(T->Right,V);
43 else return 0;
44 }else{
45 if(V==T->v){
46 T->flag = 1;
47 return 1;
48 }else return 0;
49 }
50 }
51 int Judge(Tree T,int N){
52 int i,V,flag = 0; //flag:0代表目前还不一致,1代表已经不一致
53 scanf("%d",&V);
54 if(V!=T->v) flag = 1;
55 else T->flag = 1;
56 for(i=1;i<N;i++){
57 scanf("%d",&V);
58 if((!flag)&&(!check(T,V))) flag = 1;
59 }
60 if(flag) return 0;
61 else return 1;
62 }
63 //清除T中各节点flag标记
64 void ResetT(Tree T){
65 if(T->Left) ResetT(T->Left);
66 if(T->Right) ResetT(T->Right);
67 T->flag = 0;
68 }
69 //释放T的空间
70 void FreeTree(Tree T){
71 if(T->Left) FreeTree(T->Left);
72 if(T->Right) FreeTree(T->Right);
73 free(T);
74 }
75 //判别是否与T构成一样的树
76 int main(){
77 int N,L,i;
78 Tree T;
79 scanf("%d",&N);
80 while(N){
81 scanf("%d",&L);
82 T=MakeTree(N);
83 for(i=0;i<L;i++){
84 if(Judge(T,N)) printf("Yes\n");
85 else printf("No\n");
86 ResetT(T); //flag清零
87 }
88 FreeTree(T); //数据清零
89 scanf("%d",&N);
90 }
91 return 0;
92 }

分析:

  • 用链表存储树

[刷题] PTA 04-树4 是否同一棵二叉搜索树的更多相关文章

  1. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器

    剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...

  2. PTA 04-树4 是否同一棵二叉搜索树 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/712 5-4 是否同一棵二叉搜索树   (25分) 给定一个插入序列就可以唯一确定一棵二 ...

  3. PTA L2-004 这是二叉搜索树吗?-判断是否是对一棵二叉搜索树或其镜像进行前序遍历的结果 团体程序设计天梯赛-练习集

    L2-004 这是二叉搜索树吗? (25 分)   一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结 ...

  4. [PTA] 数据结构与算法题目集 6-12 二叉搜索树的操作集

    唯一比较需要思考的删除操作: 被删除节点有三种情况: 1.叶节点,直接删除 2.只有一个子节点,将子节点替换为该节点,删除该节点. 3.有两个子节点,从右分支中找到最小节点,将其值赋给被删除节点的位置 ...

  5. [刷题] PTA 03-树1 树的同构

    程序: 1 #include <stdio.h> 2 #define MaxTree 10 3 #define ElementType char 4 #define Tree int 5 ...

  6. PTA 是否同一棵二叉搜索树(25 分)

    是否同一棵二叉搜索树(25 分) 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始 ...

  7. LeetCode刷题191130 --基础知识篇 二叉搜索树

    休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继 ...

  8. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历   二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则 ...

  9. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大于它的根 ...

随机推荐

  1. 全网最详细的Linux命令系列-cat命令

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 命令格式: cat [选项] [文件].. ...

  2. Apache Hudi C位!云计算一哥AWS EMR 2020年度回顾

    1. 概述 成千上万的客户在Amazon EMR上使用Apache Spark,Apache Hive,Apache HBase,Apache Flink,Apache Hudi和Presto运行大规 ...

  3. 02 . MongoDB复制集,分片集,备份与恢复

    复制集 MongoDB复制集RS(ReplicationSet): 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB)Paxos(mysql MGR 用的是变种)) 如果发生主 ...

  4. Spring Security OAuth 2.0 发放令牌接口地址自定义

    OAuth 2.0 如何获取令牌 以密码模式为例,获取 Token curl --location --request POST 'http://oauth-server/oauth/token' \ ...

  5. Crackme_003

    功能: 拿到文件,先执行一下.功能如下: 1.nag窗口 会先出现如下nag窗口,持续几秒 2.注册窗口: 出现错误会提示:You Get Wrong  Try Again 破解: 1.查壳: 无壳, ...

  6. Unlink学习总结

    Unlink 本文参考了CTF-wiki 和glibc 源码 原理: 我们在利用 unlink 所造成的漏洞时,其实就是借助 unlink 操作来达成修改指针的效果. 我们先来简单回顾一下 unlin ...

  7. kafka listeners和advertised配置

    kafka  listeners和advertised配置 kafka版本:kafka_2.11-2.3.0 kafka配置listeners # The address the socket ser ...

  8. WordPress 缩率图学习笔记

    WordPress 缩率图学习笔记 Wordpress在生成缩略图的过程中,有两种不同的规则 缩放模式:缩放模式就是将图片等比例缩小,且新生成的缩略图长度或高度两者之中,有一个是你设置的缩略图的尺寸 ...

  9. 【CompletableFuture】CompletableFuture中join()和get()方法的区别

    一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即未经检查的异常),不会强制开发者 ...

  10. 【VritualEnv】虚拟环境的介绍和基本使用

    一.virtualenv的介绍: 在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决 ...