【考研数据结构代码题5】二叉树搜索指定关键字和其父亲结点

题目:已知一棵二叉树已经存在,二叉树的结点有三个域,分别是左右孩子指针域与数据域,且数据域为字符型,规定指针bt指向根结点。给定一个字符ch,请编写程序实现查找二叉树中是否存在数据域为ch的结点?若存在再找出该结点的双亲结点

难度:★★★

cpp 复制代码
#include<stdio.h>
#include<stdlib.h>
//二叉树存储结构
typedef struct node{
	char key;//数据域
	struct node *left,*right;//左右孩子指针域 
}BiNode;
//递归查找指定关键字结点
void find(BiNode *T,char target,BiNode *parent){
	if(T){
		int left_s,right_s;
		//如果当前结点就是要找的关键字结点,则输出其父节点关键字
		if(T->key==target){
			if(!parent)printf("NULL");
			else printf("%c",parent->key);
		}
		//递归搜索 
		if(T->left)  find(T->left,target,T);
		if(T->right) find(T->right,target,T);
	}
} 

int main(){
	char target;//目标关键字符
	scanf("%c",&target);
	find(bt,target,NULL);//bt为题目已知条件,指向该树的根节点
	return 0;
}
相关推荐
立志成为大牛的小牛1 分钟前
数据结构——三十三、Dijkstra算法(王道408)
数据结构·笔记·学习·考研·算法·图论
小王C语言2 小时前
哈希表实现
数据结构·哈希算法·散列表
靖难都2 小时前
数据结构:单链表
数据结构
perseveranceX2 小时前
插入排序:扑克牌式的排序算法!
c语言·数据结构·插入排序·时间复杂度·排序稳定性
CS创新实验室2 小时前
典型算法题解:长度最小的子数组
数据结构·c++·算法·考研408
Ialand~5 小时前
深度解析 Rust 的数据结构:标准库与社区生态
开发语言·数据结构·rust
Yupureki7 小时前
从零开始的C++学习生活 18:C语言复习课(期末速通)
c语言·数据结构·c++·学习·visual studio
小兔崽子去哪了7 小时前
数据结构和算法(Python)
数据结构·python
FmZero10 小时前
基于比特位图映射对List<Object>多维度排序
数据结构·list
Mr.H012710 小时前
克鲁斯卡尔(Kruskal)算法
数据结构·算法·图论