程序:

 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. Qt中检查槽函数connect是否正确

    环境:VS2017+Qt插件 一般情况下VS+QT环境下运行的QT程序输出信息需要在调试模式的输出栏可以看到,由于太多信息所以导致查看不方便(当然也可以在筛选选项中筛选信息). 有更方便查看输出信息的 ...

  2. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之物理机配置-01

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之物理机配置-01  欢迎加QQ群:1026880196  进行交流学习 近期我发现网上有人转载或者复制 ...

  3. OkHttp配置HTTPS访问+服务器部署

    1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二 ...

  4. Magicodes.IE.ASPNETCore之多样化接口使用

    1.安装包 Install-Package Magicodes.IE.AspNetCore 2.开始配置 在Startup.cs的Configure()方法中,在UseRouting()中间件之后,注 ...

  5. Day14_81_反射机制获取Class属性

    反射机制获取Class属性 获取属性 方法一: Class对象 . getFields();只能用来获取公开的属性,不能获取有私有的或者受保护的属性 获取属性 方法二: Class对象 . getDe ...

  6. IDEA 2021版新建Maven、TomCat工程

    目录 2021版IDEA中Maven.TomCat配置 1.基于Webapp创建一个Maven项目 1.1 新建项目模板 1.2 指定名称 1.3 指定信息 1.4 指定Maven地址 1.5 构建成 ...

  7. 用C/C++手撕CPlus语言的集成开发环境(1)—— 语言规范 + 词法分析器

    序言 之所以叫做CPlus语言,是因为原本是想起名为CMinus的,结果发现GitHub和Gitee上一堆的CMinus的编译器(想必都是开过编译原理课程并且写了个玩具级的语言编译器的大佬们吧).但是 ...

  8. Java中的线程池用过吧?来说说你是怎么理解线程池吧?

    前言 Java中的线程池用过吧?来说说你是怎么使用线程池的?这句话在面试过程中遇到过好几次了.我甚至这次标题都想写成[Java八股文之线程池],但是有点太俗套了.虽然,线程池是一个已经被说烂的知识点了 ...

  9. 1.6.3- HTML有序列表 ol元素

    代码如下: 浏览器打开: 总结:

  10. 10- sudo,exit命令

    sudo命令: 作用:用超级用户权限来执行这些命令. 格式:sudo 命令 [选项] [参数] Linux root根目录文件夹 exit命令: 退出用户登陆 Linux关机 开机 重启命令: