求一个结点x在在二叉树中的双亲结点算法

article/2025/8/20 11:15:42

1、算法思想

使用先序递归遍历思想完成算法设计。首先判断节点的左右孩子是否存在,若存在,并且左右孩子中有一个符合查找要求,则返回元素!否则,继续递归查找,直到成功或者找不到符合要求的结点!

2、算法实现

——————————————————————————————————————————————————
#include<stdio.h>
#define MaxSize 20
#include
#include<stdlib.h>
#define endl ‘\n’
using namespace std;
typedef struct BiTNode{ //结点
char data; //数据域
struct BiTNode *lchild,*rchild; //指针域
}BiTNode,*BiTree;
——————————————————————————————————————————————————
//先序遍历的顺序建立二叉链表
void CreateTree(BiTree &T){
char ch;
cin>>ch;
if (ch == ‘#’) T = NULL; //递归结束,建立空树
else{
T = new BiTNode; //申请一个结点
T->data = ch; //将输入值赋值给T
CreateTree(T->lchild); //递归创建左子树
CreateTree(T->rchild); //递归创建右子树
}
}
——————————————————————————————————————————————————
//先遍历输出
void PreOrder(BiTree T){
if(T != NULL){
cout<data<<" “; //递归打印当前节点
PreOrder(T->lchild); //递归输出左子树
PreOrder(T->rchild); //递归输出右子树
}
}
——————————————————————————————————————————————————
//查找函数
void FindParents(BiTree T,char x){
if(T != NULL){
if(T->lchild != NULL && T->lchild->data == x) cout<<”\n"<<x<<" 的父节点是"<data;
if(T->rchild != NULL && T->rchild->data == x) cout<<“\n”<<x<<" 的父节点是"<data;;
FindParents(T->lchild,x);
FindParents(T->rchild,x);
}
}
——————————————————————————————————————————————————
//主函数
main(){
BiTree T;
cout<<“\n请输入字符!(若输入的是#代表建立的是一棵空树):”;
CreateTree(T);
cout<<“\n先序遍历输出二叉链表:”; //A B C # # D E # # G # # F # # #
//ABC##DE##G##F###
PreOrder(T);
fflush(stdin);
char x;
cout<<“\n\n请输入字符:”;
scanf(“%c”,&x);
FindParents(T,x);
}
——————————————————————————————————————————————————

在这里插入图片描述

3、核心代码

//查找函数 
void  FindParents(BiTree T,char x){if(T != NULL){if(T->lchild != NULL && T->lchild->data == x) cout<<"\n"<<x<<" 的父节点是"<<T->data;if(T->rchild != NULL && T->rchild->data == x) cout<<"\n"<<x<<" 的父节点是"<<T->data;;FindParents(T->lchild,x);FindParents(T->rchild,x);}
}

4、算法分析

该算法的实现是借助二叉树的先序遍历。递归遍历二叉树,每一次递归调用首先利用先序遍历判断当前根节点是否存在左右孩子,若是存在并且左右中的数值就是所给参数的孩子结点,那么当前父节点肯定是所给孩子结点的父亲节点,直接使用return返回当前参数结点的父亲节点,强行退出递归调用栈,程序执行完毕!否则继续递归调用二叉树,直到查找成功或者失败!


http://chatgpt.dhexx.cn/article/h64v7fsh.shtml

相关文章

计算二叉树中结点的个数

思想&#xff1a; 递归实现 图示为举例二叉树进行思路解释 二叉树中结点的个数&#xff1a;只要能计算出A左子树的个数A右子树的个数1 左子树个数&#xff1a;以B为结点的左子树个数右子树个数1 右子树个数&#xff1a;以C为结点的左子树个数右子树个数1 . . . .&#xff0…

(图解)单链表删除结点值为x的结点算法

目录 一、非递归的算法 第一种算法思路如下&#xff1a; 第二种算法思路如下&#xff1a; 二、递归的算法 一、非递归的算法 第一种算法思路如下&#xff1a; 先判断链表L是否为空&#xff0c;空链表退出程序&#xff1b;用p利用while循环从头到尾扫描单链表&#xff0c;p…

单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置

** C语言新手小白的学习笔记-------------目前持续更新中 ** 本人90后电气工程及其自动化大学生&#xff0c;大二开始接触C语言&#xff0c;写过前端&#xff0c;Python&#xff0c;但是都不精通&#xff0c;通过许多认识后明白了自身的许多不足&#xff0c;因此&#xff0c;…

武汉轰趴团建年会的疯狂玩法活动不一样的经历

又是一年的历程与工作&#xff0c;今年来一点新花样&#xff0c;来吧&#xff0c;让我们一起快乐冲向前&#xff0c;空气中满是不一样的欢声笑语&#xff0c;让我们一起感受不一样的年会趴&#xff0c;让我们一起去快乐的游玩吧。武汉轰趴团建年会的疯狂玩法活动不一样的经历 感…

天猫双11全球狂欢节的诞生,源于对快乐的分享

时光荏苒&#xff0c;天猫双11全球狂欢节&#xff0c;如今已经迈入了第十个年头。 相信有不少读者小伙伴都知道&#xff0c;双11最早其实源于中国的“光棍节”。那么这样一个原本应该是单身狗们黯然神伤的日子&#xff0c;究竟是如何演变成一场让无数消费者和商家都激情澎湃的购…

生成模型太强大?篡改与伪造检测越来越需要了!这篇最新综述不容错过

关注公众号&#xff0c;发现CV技术之美 最近一段时间&#xff0c;以扩散模型为代表的生成模型越来越能逼真地生成图像和视频&#xff0c;一方面是一群人的狂欢&#xff0c;这是AI的进步&#xff0c;另一方面却是另一群人的担忧&#xff0c;这是AI的危险。 AI技术可以造福人类&a…

你越来越孤独的3个原因

昨天看到一句话是这样说的&#xff1a;“交朋友都很难了&#xff0c;还交男朋友。” 我觉得有趣的同时&#xff0c;又发现好像真的是这样&#xff0c;身边好像很久没有出现过新的人了&#xff0c;也很少愿意去参加各种各样的聚会&#xff0c;也没有精力再去认识一些陌生人。 …

超1.58亿人将“血拼”,超级星期六购物节即将到来

超1.58亿人将“血拼”&#xff01;美国超级星期六购物节即将到来&#xff01;亚马逊出手整治“远仓近送”&#xff01; 据美国零售联合会的年度消费者调查结果显示&#xff0c;在今年圣诞节前的最后一个星期六&#xff08;即超级星期六&#xff09;&#xff0c;将有1.58亿人发生…

复旦女神陈果:孤独是一个人的狂欢,在你寂寞时请关注这些公众号充实自己

复旦大学哲学系博士陈果&#xff0c;对孤独做出了一种完美的诠释。她说&#xff1a;“狂欢是一群人的寂寞&#xff0c;孤独是一个人的狂欢。孤独不求外物&#xff0c;反求诸己。” 在你寂寞之时&#xff0c;请关注这些公众号。他们能给你提供有生命力的阅读&#xff0c;让你在有…

1024 程序员节狂欢盛会,等了一年终于来了!

风起岳麓&#xff0c;扶摇而上&#xff0c;约战湘江&#xff0c;谁与争锋&#xff01;以“算力新时代开源创未来”为主题的第三届 2022 长沙中国 1024 程序员节于 10 月 22 日-24 日强势来袭&#xff01;数位院士领衔、中国根技术掌门人以及海外先进开源技术掌门人齐聚&#xf…

夜夜狂欢的派对

奇怪&#xff0c;外国人的语气或思维总因为隔膜的缘故觉得很幽默&#xff0c;是那种“自己不笑却让所有人笑”的幽默。比如早上抛公发给我看的帖子中的几段&#xff1a; “北京有个夜夜狂欢的派对&#xff0c;一定很多人都去参加。因为在北京很多人每天看上去都很疲倦。我不知…

一群搞社区的人

最近Mixlab无界社区参与的电台节目有点多&#xff0c;上次是城市花样精&#xff0c;这次是#社区特辑。推荐给大家&#xff1a; opus 号外号外&#xff01;好公社“嗲声嗲气”播客和CSDC服务设计社区“月月谈”电台合作啦&#xff01; 什么&#xff1f;听起来这个合作来得太突然…

一群人的战斗

一、Bug 来了 一个平静的周日午后&#xff0c;正悠闲地在公园里遛娃。突然来了一条消息&#xff0c;打开企业微信仔细看了下&#xff0c;竟大吃一惊&#xff1a;客户成功在群内反馈了 Android A/B Testing SDK 的一个 crash&#xff0c;需要紧急解决。 得知问题后我立刻和客…

一个“后浪”的狂欢,一群中年人的孤单!

点击“技术领导力”关注∆ 每天早上8:30推送 作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) “孤单&#xff0c;是一个人的狂欢&#xff0c;狂欢&#xff0c;是一群人的孤单。” 《叶子》&#xff0c;阿桑&#xff0c;词/曲&#xff1a;陈晓娟 01 …

计算机术语hook的理解

Hooks就像一些外来的钩子&#xff0c;在源代码之间钩取&#xff08;窃听&#xff09;一些信息&#xff0c;当它捕捉到自己感兴趣的事发生&#xff0c;就拦截下来&#xff0c;让自己的代码执行一下&#xff0c;处理一下这个信息&#xff0c;然后再放出去继续之前的进程。这样就可…

计算机mips是什么,在计算机术语中,什么叫MIPS

2006-08-18 在计算机术语中,什么叫VGA 显卡所处理的信息最终都要输出到显示器上&#xff0c;显卡的输出接口就是电脑与显示器之间的桥梁&#xff0c;它负责向显示器输出相应的图像信号。CRT显示器因为设计制造上的原因&#xff0c;只能接受模拟信号输入&#xff0c;这就需要显卡…

堆 (计算机术语)

2019独角兽企业重金招聘Python工程师标准>>> 堆&#xff08;英语&#xff1a;heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质&#xff1a; 堆中某个节点的值总是不大于或不小于其父节点的值&#xff1b…

计算机术语翻译(Term.)及缩写整理(Abbr.)

Table of Contents &#x1f52e; 计算机术语翻译&#xff08;Term.&#xff09;及缩写整理&#xff08;Abbr.&#xff09;&#x1f5e1;️ DOI, URI, URL, URN&#x1f5e1;️ prompt&#x1f5e1;️ as-is, to-be&#x1f5e1;️ WYSIWYG&#x1f5e1;️ socket&#x1f5e1;…