7-1 建立二叉搜索树并查找父结点(PTA - 数据结构)

按输入顺序建立二叉搜索树,并搜索某一结点,输出其父结点。

输入格式:

输入有三行:
第一行是n值,表示有n个结点;
第二行有n个整数,分别代表n个结点的数据值;
第三行是x,表示要搜索值为x的结点的父结点。

输出格式:

输出值为x的结点的父结点的值。
若值为x的结点不存在,则输出:It does not exist.
若值为x的结点是根结点,则输出:It doesn't have parent.

输入样例:

2
20
30
20

输出样例:

It doesn't have parent.

###输入样例:

2
20
30
30

输出样例:

20

提交结果: 


思路分析:

        创建树,查找元素,设置一个指针指向查找的结点的父节点。(这道题我自己写,提交全是段错误,然后喂给文心一言,给我改了一下,过了俩检查点,我自己在文心一言给出结果上面改,最后全过了,离谱!)


初始代码(段错误版):含有老师PPT代码

//
// Created by DDD on 2023/12/20.
//
#include <stdio.h>
#include <malloc.h>typedef struct BiTNode
{int data;struct BiTNode *lchild,*rchild;
}BiTNode;void Init(BiTNode *t,int x){t->data = x;t->rchild = NULL;t->lchild = NULL;
}BiTNode *insertNode(BiTNode *t,BiTNode *s){BiTNode *p,*q;if(t==NULL)return s;p = t;while (p){q = p;if(s->data == p->data)return t;if(s->data < p->data)p = p->rchild;else p = p->rchild;}if(s->data<q->data)q->lchild = s;else q->rchild = s;return t;
}void Search(BiTNode *Head,int x){BiTNode *p,*q;p = Head;if(Head == NULL){printf("It does not exist.");return;}if(Head->data == x) {printf("It doesn't have parent.");return;}while(p){if(x == p->data){printf("%d",q->data);return;}q = p;if(x>p->data)p = p->rchild;else p=p->lchild;}printf("It does not exist.");
}int main(){int n,x;scanf("%d",&n);BiTNode *SearchTree;scanf("%d",&x);Init(SearchTree,x);for (int i = 0; i < n-1; ++i) {scanf("%d",&x);BiTNode *insert = (BiTNode *) malloc(sizeof(BiTNode));Init(insert,x);SearchTree = insertNode(SearchTree,insert);}scanf("%d",&x);Search(SearchTree,x);
}

结果版代码:具有人工智能(人工+智能)的美感

#include <stdio.h>
#include <stdlib.h>typedef struct BiTNode
{int data;struct BiTNode *lchild, *rchild;
} BiTNode;void Init(BiTNode *t, int x) {t->data = x;t->lchild = t->rchild = NULL;
}BiTNode *insertNode(BiTNode *t, BiTNode *s) {if (t == NULL) {t = (BiTNode *)malloc(sizeof(BiTNode));Init(t, s->data);return t;}if (s->data < t->data) {t->lchild = insertNode(t->lchild, s);} else if (s->data > t->data) {t->rchild = insertNode(t->rchild, s);}else if(s->data == t->data){return t;}// If data is same, you may choose to insert or not, based on your requirements.return t;
}void Search(BiTNode *Head, int x) {BiTNode *q;if (Head == NULL) {printf("It does not exist.\n");return;}if (Head->data == x) {printf("It doesn't have parent.\n");return;}BiTNode *p = Head;while (p) {if (x == p->data) {printf("%d\n", q->data);return;}q = p;if (x < p->data) {p = p->lchild;} else {p = p->rchild;}}printf("It does not exist.\n");
}int main() {int n, x;scanf("%d", &n);BiTNode *root = NULL; // Initialize the root as NULL. This will be our SearchTree.scanf("%d", &x);root = (BiTNode *)malloc(sizeof(BiTNode)); // Allocate memory for the root node.Init(root, x); // Initialize the root node.for (int i = 0; i < n - 1; ++i) {scanf("%d", &x);BiTNode *insert = (BiTNode *)malloc(sizeof(BiTNode)); // Allocate memory for the new node.Init(insert, x); // Initialize the new node.root = insertNode(root, insert); // Insert the new node into the binary search tree.}scanf("%d", &x);Search(root, x);free(root);return 0;
}


return -1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292275.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NTP8835(30W+2X10W 2.1音箱专用D类功放IC)

数字音频技术的迅速发展&#xff0c;使功放IC在消费电子行业中极具潜力&#xff1b;数字功放芯片能够将数字信号转换成音频信号&#xff0c;从而使用户能够从各种外部设备和媒体中获得最佳的音质&#xff1b;在许多领域得到广泛应用&#xff0c;包括家庭影院、专业音响、电视机…

【JS】按照a>b>c>d>e>f的优先级,将a,b,c,d,e,f元素进行筛选,选出三个不为空字符的元素进行字符拼接

设计思路&#xff1a; 1、定义一个数组&#xff0c;把元素按照优先级进行排序&#xff1b; 2、 使用 filter() 方法过滤掉空字符串元素&#xff0c;得到一个新的数组; 3、在排序函数中&#xff0c;循环数组&#xff0c;使用 indexOf() 方法获取元素 a 和 b 在数组中的索引&a…

JAVA多态

前言 多态是同一个行为具有多个不同表现形式或形态的能力。 多态性是指父类的某个方法被其子类重写时&#xff0c;可以各自产生自己的功能行为 上转型 介绍多态之前&#xff0c;先介绍一下上转型。上转型&#xff08;Upcasting&#xff09;和多态&#xff08;Polymorphism&a…

软件项目安全保证措施

一、 身份鉴别 二、 访问控制 三、 通信完整性、保密性 四、 抗抵赖 五、 数据完整性 六、 数据保密性 七、 应用安全支撑系统设计 软件开发全流程文档支撑下载&#xff1a;软件项目开发全套文档下载-CSDN博客

【Xcode】解决Unable to process request - PLA Update available

出现场景 IOS更新app时&#xff0c;使用Xcode上传新版本的包时&#xff0c;提示无法上传。 Unable to process request -PLA update available you currently dont have access to this membership resource. To resolve this issue ,agree to the latest program license a…

4 postman响应数据解析

上一篇:3 使用postman批量创建测试数据-CSDN博客 在接口测试中,从接口的响应结果中获取数据是很常用的。比如说做断言的时候,需要确保接口返回数据是符合预期的。又比如有些接口的输入参数值,需要用到前面接口运行返回的数据。下面先介绍如何解析响应数据(以json数…

pip 离线安装:利用pypi网站进行模块 库的离线安装

离线安装是一种很好的方法&#xff0c;在网络不佳、库版本不明确、复杂库本地编译安装报错时&#xff0c;通过whl文件的下载安装&#xff0c;可以很高效的解决问题。 pypi的网站&#xff1a;https://pypi.org/ 这个网站包含各种你 pip install xxx 的库&#xff0c;离线安装可…

【权威认证】飞凌嵌入式FET113i-S核心板国产化率达100%

经中国赛宝实验室的严格认证&#xff0c;飞凌嵌入式FET113i-S核心板的电子元器件国产化率达100%——这款超高性价比的全国产核心板为新基建领域的国产化替代升级注入了新动力。 关于【中国赛宝实验室】 中国电子产品可靠性与环境试验研究所&#xff08;工业和信息化部电子第五研…

106 uni-app 小程序之巨坑 not found path,not found methods v-for渲染出现报错

1.Component is not found in path 你是否像我一样&#xff0c;检查了无数遍&#xff0c;引入路径检查千万遍&#xff0c;就是没写错&#xff0c;小程序后台就是给你报错&#xff0c; 不用慌&#xff0c;心里默念&#xff1a;我不能砸电脑&#xff0c;我不能砸电脑&#xff0…

JavaGUI(但期末速成版)之事件监听和处理

点击返回标题->JavaGUI期末速成版-CSDN博客 前言 依旧先声明&#xff0c;本篇记录的JavaGUI编程都是十分精简的&#xff0c;内容只取常用的、套路的、应付期末考试的。 我先放两张ppt的原内容。。。 看完&#xff08;我觉得你可能都没看完&#xff09;&#xff0c;摊牌了&a…

备份至关重要!如何解决iCloud的上次备份无法完成的问题

将iPhone和iPad备份到iCloud对于在设备发生故障或丢失时确保数据安全至关重要。但iOS用户有时会收到一条令人不安的消息&#xff0c;“上次备份无法完成。”下面我们来看看可能导致此问题的原因&#xff0c;如何解决此问题&#xff0c;并使你的iCloud备份再次顺利运行。 这些故…

做外贸多想一步,多走一步

最近在网上给小儿买了一个液晶画画板&#xff0c;自从告诉小儿已经购物需要耐心等待之后&#xff0c;几乎每天小儿要询问几遍&#xff0c;快递到哪里了&#xff1f; 好不容易盼到了&#xff0c;结果打开一看却是个坏的&#xff0c;虽然外包装是好的&#xff0c;但是明显这个快…