SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
目录
题目
思路
代码
题目
题目描述
利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的双亲结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的双亲结点。注意输入数据序列中的“#”字符和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。
输入
输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。
输出
用一行输出该用例对应的二叉树中指定结点的双亲结点。若相应双亲结点不存在则以“#”代替。
样例输入
A## A ABC#### B样例输出
# A
思路
由于本题是给出孩子节点,要求输出父亲节点。那么我们先序遍历,找到父亲节点的孩子节点即可(也就是root->left->data或者root->right->data,找到了,就输出root->data,并退出程序)
但是要注意一下左右孩子是空节点的情况,要分开讨论一下(当左孩子为空....当右孩子为空....当都为空.....当都不为空.....)
void BTSearch(BinaryTree* &root,char key) {if(root==NULL || root->left==NULL && root->right==NULL) return;if(root->left==NULL) {if(root->right->data==key) {cout<<root->data;exit(0);}}else if(root->right==NULL) {if(root->left->data==key) {cout<<root->data; exit(0);}}else if(root->right->data==key || root->left->data==key) {cout<<root->data;exit(0);}BTSearch(root->left,key);BTSearch(root->right,key);return;
}
代码
二叉树模板,二叉树介绍
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
typedef long long ll;
using namespace std;
//定义二叉树
typedef struct BTNode {char data;BTNode* left;BTNode* right;
}BinaryTree;
//创建二叉树
void BTCreate(BinaryTree* &root) {BTNode* q;q=new BTNode;cin>>q->data;if(q->data=='#') {root=q=NULL;return;}root=q;BTCreate(root->left);BTCreate(root->right);
}
void BTSearch(BinaryTree* &root,char key) {if(root==NULL || root->left==NULL && root->right==NULL) return;if(root->left==NULL) {if(root->right->data==key) {cout<<root->data;exit(0);}}else if(root->right==NULL) {if(root->left->data==key) {cout<<root->data; exit(0);}}else if(root->right->data==key || root->left->data==key) {cout<<root->data;exit(0);}BTSearch(root->left,key);BTSearch(root->right,key);return;
}
int main() {BinaryTree *root;BTCreate(root);char key;cin>>key;BTSearch(root,key);cout<<"#";return 0;
}
SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点相关推荐
- SWUST OJ 1052: 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的双亲结点.约定二叉树结点数据为单个大写英文字符.当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点.最 ...
- SWUST OJ 1051: 输出利用先序遍历创建的二叉树中的指定结点的子结点
先吐槽一下"孩子"居然是禁止使用的词汇?!我说"孩子节点都不行"嘛 题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的儿子结点.约定二叉树结点数 ...
- SWUST OJ 1053: 输出利用先序遍历创建的二叉树中的指定结点的度
水了三题一摸一样的题目,好快乐 题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度.约定二叉树结点数据为单个大写英文字符.当接收的数据是字符"#"时表示该结点不需 ...
- SWUST OJ#1051(数据结构之输出利用先序遍历创建的二叉树中的指定结点的Child结点)
目录 题目 思路 数据结构代码 小结 题目 思路 从根节点开始遍历,在节点不为空的前提下,进行类似与数学的分类讨论!!!接下来请各位看代码部分,有疑问评论区留言,有问必答!!! 数据结构代码 #inc ...
- SWUST OJ 978: 输出利用先序遍历创建的二叉树的中序遍历序列
题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建 ...
- SWUST OJ 980: 输出利用先序遍历创建的二叉树的层次遍历序列
[24行]之前看到众多巨佬用数组写二叉树,然后在他们的基础上,我发现层序遍历完全可以用数组写并且代码不超过30行.也许他们认为过于简单故未单独写博文,于是我打算补一下,希望各位不要在意. 题目: 用数 ...
- SWUST OJ 971: 统计利用先序遍历创建的二叉树的深度
题目描述 利用先序递归遍历算法创建二叉树并计算该二叉树的深度.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树 ...
- #swust oj978,979,980输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序
输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序列 ***层次遍历思路: 1.初始化一个队列 2.把根节点指针入队 3.队列非空时:出队列取得一个结点指针,访问该节点,若该节点的左 ...
- SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列
SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列 题目 输入 输出 样例输入 样例输出 源代码 题目 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二 ...
最新文章
- linux系统内存执行elf的多种方式
- centos下使用mysql,centos下使用mysql的一些问题和解决方法
- RNN代码解释pytorch
- Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP
- Launch failed - cleaning up connection
- 【转载】gcc 使用中常用的参数及命令
- QWidget 设置背景图片
- jenkins构建时报错ERROR: Cannot run program “docker“ (in directory “/var/jenkins_home/workspace/
- KY-RTI分布仿真技术:第五章 Qt程序设计
- matlab help函数用法,帮你快速入门MATLAB(基本知识篇)
- 教你使用GitHub搭建个人网站
- 海思对接索尼ECX334 RGB OLED屏总结
- godot mysql_Go 每日一库之 godotenv
- 苦练基本功-计算机网络基础-TCP建立连接
- 风口背后:第一批 00 后 Web3 创业者,和他们的「人间清醒」
- GUI图形化界面(后篇)
- wps去掉列的重复记录
- MySQL中单句实现无限层次父子关系查询
- 面包板入门制作之光敏电阻,
- 智享生态繁荣,百度智能云邀请生态伙伴共建北方区域