程序:

 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. Windows下C++/Fortran调用.exe可执行文件

    目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fo ...

  2. React 错误边界组件

    这是React16的内容,并不是最新的技术,但是用很少被讨论,直到通过文档发现其实也是很有用的一部分内容,还是总结一下- React中的未捕获的 JS 错误会导致整个应用的崩溃,和整个组件树的卸载.从 ...

  3. [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.4 规范电路模型

    7.4 规范电路模型 在讨论了推导开关变换器交流等效电路模型的几种方法后,让我们先停下来,说明下这些结果.所有的在 CCM下以PWM工作的DC-DC变换器都具有相似的基本功能.首先,他们在理想情况下, ...

  4. python2爬取国家统计局全国省份城市区街道信息

    工作中,再次需要python,发现python用得好 ,真的可以节省很多人力,先说我的需求,需要做一个类似像支付宝添加收货地址时,选择地区的功能,需要详细到街道信息,也就是4级联动,如右图.首先需要的 ...

  5. SQL Server 实用语句

    创建临时表 #Test CREATE TABLE #Test( ID INT, Name VARCHAR(50) ) INSERT INTO #Test( ID, Name ) VALUES ( 1, ...

  6. 【CTF】图片隐写术 · 修复被修改尺寸的PNG图片

    前言 今天我们想来介绍一下关于图片隐写相关处理,以及修复被修改尺寸的PNG图片. 关于PNG图片的相关处理,是CTF Misc图片隐写术中极为基础的一项操作,笔者这里是想要提一些做题过程中发现的小技巧 ...

  7. JFX11+Maven+IDEA 发布跨平台应用的完美解决方案

    1 概述 前几天写了两篇关于JFX+IDEA打包跨平台应用的文章,这篇是使用IDEA自带功能打包的,这篇是使用Maven进行打包的,但是效果不太满意,因为从JDK9开始实现模块化,同时JFX部分从JD ...

  8. Manjaro 蓝牙连接问题

    1 问题描述 蓝牙不能连接,或者连接上了没有声音. 2 解决方案 首先确保相应软件包存在: sudo pacman -S bluez bluez-utils pulseaudio-bluetooth ...

  9. jmeter响应时间与postman响应时间为什么不一样?

    postman响应时间 是一个线程或者一个用户再者说是发送一次请求的响应时间,一般都是200ms一下: 而jmeter属于并行,就是多个用户去访问这个功能点或者接口,多个用户同时访问,就会造成压力,自 ...

  10. [转]gitlab ci/cd 发布

    转自 https://meigit.readthedocs.io/en/latest/configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_ru ...