程序:

 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. python3使用cv2对图像进行基本操作

    技术背景 在机器视觉等领域,最基本的图像处理处理操作,可以通过opencv这个库来实现.opencv提供了python的接口,所需安装的库为opencv-python,但是在库的导入的时候一般用的是i ...

  2. PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642 题目描述: To prepare for PAT, the judge someti ...

  3. [BFS]A. 【例题1】走迷宫

    A . [ 例 题 1 ] 走 迷 宫 解析 简单的BFS模板题 Code #include <bits/stdc++.h> #define N 1005 using namespace ...

  4. 专家动态页面的实现——php基于CI框架的学习(二)

    以下是本次学习的页面 打开相关文件,整个定义了一个Expert类 class Expert extends CI_Controller{} 在Expert类里定义了几个参数以及说明其使用了哪些mode ...

  5. 基于注解的springboot+mybatis的多数据源组件的实现

    通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需 ...

  6. 设计原则:接口隔离原则(ISP)

    接口隔离原则的英文是Interface Segregation Principle,缩写就是ISP.与里氏替换原则一样其定义同样有两种 定义1: Clients should not be force ...

  7. seaweedfs分布式文件使用示例

    安装seaweedfs分布式文件存储 启动一个测试集群:2 filer(8801-8802) + 3 master(9331-9333) + 3 volume(8081-8083) 下载seaweed ...

  8. python 爬取王者荣耀英雄皮肤代码

    import os, time, requests, json, re, sys from retrying import retry from urllib import parse "& ...

  9. 1087 All Roads Lead to Rome

    Indeed there are many different tourist routes from our city to Rome. You are supposed to find your ...

  10. Linux在shell终端中清空DNS缓存,刷新DNS的方法

    现在很多Linux发行版都没有内置DNS本地缓存,Linux不像Windows那样可以使用ipconfig /flushdns来刷新,在Linux下无需刷新,因为本身没有缓存. 前言 在Linux系统 ...