数据结构实验之二叉树七:叶子问题

题目描述

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。

输入

 输入数据有多行,每一行是一个长度小于50个字符的字符串。

输出

 按从上到下从左到右的顺序输出二叉树的叶子结点。

示例输入

abd,,eg,,,cf,,,
xnl,,i,,u,,

示例输出

dfg

uli

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef char element; typedef struct BNode {element data;BNode *lchild,*rchild; }*BiTree; typedef struct QNode {BiTree data;QNode *next; }*queueptr; typedef struct {queueptr front;queueptr rear; }queue; char str[55]; int i; element CreateBiTree(BiTree &T)//生成树; {if(str[i++]==',') T=NULL;//树空;else{T=new struct BNode;if(!T) exit(0);T->data=str[i-1];CreateBiTree(T->lchild);//建左子树CreateBiTree(T->rchild);//建右子树;}return 1; } void initqueue(queue &Q)//队列的初始化; {Q.front=Q.rear=(queueptr)malloc(sizeof(QNode));if(!Q.front) exit(0);Q.front->next=NULL; } void Enqueue(queue &Q,BiTree &e)//e前一定要加取地址符,否则死循环 {//从队尾进队相当建顺序链表;queueptr p;p=(queueptr)malloc(sizeof(QNode));if(!p) exit(0);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p; } element Dequeue(queue &Q,BiTree &e)//e前一定要加取地址符,否则死循环 {//从队头出队;queueptr p;if(Q.front==Q.rear)return 0;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear==p)//只剩一个元素时;Q.rear=Q.front;free(p);return 1; } int Emptyqueue(queue &Q)//清空队; {if(Q.front==Q.rear)return 0;return 1; } void Traverse(BiTree &T)//浏览树的每个节点,进而判断树的叶子; {queue Q;initqueue(Q);if(T)Enqueue(Q,T);while(Emptyqueue(Q)){Dequeue(Q,T);if(!T->lchild&&!T->rchild)//叶子结点判定条件printf("%c",T->data);if(T->lchild)Enqueue(Q,T->lchild);if(T->rchild)Enqueue(Q,T->rchild);} }int main() {BiTree T;while(~scanf("%s",str)){i=0;CreateBiTree(T);//生成树;Traverse(T);//树叶子的遍历;printf("\n");} }

#include<iostream> #include<cstring> #include<queue> #include<cstdio> #include<algorithm> using namespace std; typedef struct Bnode { char data; Bnode *rchild,*lchild; }*BiTree,Bnode; char str[55]; int i; void create(BiTree &T) { if(str[i++]==',') T=NULL; else { T=new Bnode; if(!T) exit(0); T->data=str[i-1]; create(T->lchild); create(T->rchild); } } void  cengci(BiTree &T) { int out=0,in=0; BiTree q[100];//存树的队列; if(T) q[in++]=T; while(in>out) { if(q[out]) { printf("%c",q[out]->data); q[in++]=q[out]->lchild; q[in++]=q[out]->rchild; } out++; } } void Traverse(BiTree T) { queue<BiTree> q; BiTree p=NULL; if(T) { q.push(T); } while(!q.empty()) { p=q.front(); q.pop(); if(!p->lchild&&!p->rchild) cout<<p->data; if(p->lchild) q.push(p->lchild); if(p->rchild) q.push(p->rchild); } } int main() { BiTree T; while(~scanf("%s",str)) { T=NULL; i=0; create(T); //cengci(T); Traverse(T); cout<<endl; } return 0; }

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

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

相关文章

vi/vim 光标移动命令

移动光标 上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行 下:j nj:向下移动n行 左:h nh:向左移动n列 右:l nl:向右移动n列 w&#xff1a;光标以单词向前移动 nw&#xff1a;光标向前移动n个单词 光标到单词的第一个字母上 b&#xff1a;与w相反 e: 光标以单词向前…

CentOS离线安装httpd服务

文章目录需求背景安装需求背景 需要在无网络环境下安装httpd服务 安装 提示&#xff1a;直接下载httpd离线安装包无法安装成功&#xff0c;需要安装相对应的依赖 需要下载的依赖如下&#xff1a; apr-1.4.8-5.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm apr-util-lda…

转换流和内存流

转换流:把字节流转成字符流: InputStreamReader:把字节输入流转成字符输入流. OutputStreamWriter:把字节输出流转成字符输出流. 为什么有字节转字符流,没有字符转字节流. 字节流可以操作一切文件(纯文本文件/二进制文件).字符流是用来操作中文纯文本使用的,本身是对字节流的…

windows配置gvim高效率编程(cc++)带自动补全代码

对vim的配置足以处理一般的比赛获其他编程项目要求&#xff0c;如自动缩进&#xff0c;自动补全等等。先上几张截图&#xff0c;看看效果&#xff1a; 可以看见vim简洁高效的界面和不错的缩进功能。 debug功能 一、安装gvim 下载资源并安装 百度云下载网址http://pan.baid…

数据结构实验之二叉树四:还原二叉树

题目描述 给定一棵二叉树的先序遍历序列和中序遍历序列&#xff0c;要求计算该二叉树的高度。 输入 输入数据有多组&#xff0c;每组数据第一行输入1个正整数N(1 < N < 50)为树中结点总数&#xff0c;随后2行先后给出先序和中序遍历序列&#xff0c;均是长度为N的不包含重…

Flink 1.12 CDH 6.3 集成

之前记录的&#xff1a;Flink 1.9 CDH 6.3 集成 有些下载链接可能被官方关闭了&#xff0c;这里介绍1.12版本集成&#xff0c;并把安装包下载地址换为百度网盘链接 下载安装包 链接: https://pan.baidu.com/s/112fiaaMAMMXMsyiTDh3qjg 提取码: ar5f 安装包内容 FLINK-1.12…

合并流

合并流/顺序流(SequenceInputStream): 就是把多个输入流,合并成一个流对象.

gvim常用的配置及插件 -windows

gvim常用的配置及插件 接触vim也已经有一年多了&#xff0c;期间也用过一段时间的SourceInsight&#xff0c;SourceInsight是Windows下一款不错的查看代码的软件。利用它可以迅速的了解一个大型程序的结构。后来在Linux下进行了一段时间的程序开发&#xff0c;就回到vim上了,经…

数据结构实验之求二叉树后序遍历和层次遍历

题目描述 已知一棵二叉树的前序遍历和中序遍历&#xff0c;求二叉树的后序遍历。输入 输入数据有多组&#xff0c;第一行是一个整数t (t<1000)&#xff0c;代表有t组测试数据。每组包括两个长度小于50 的字符串&#xff0c;第一个字符串表示二叉树的先序遍历序列&#xff0c…

CDH 6 安装服务哈希验证失败 解决方法

当安装cdh 6&#xff0c;使用本地搭建的parcel时&#xff0c;出现了哈希验证失败的问题&#xff1a; 查看了parcel的sha值&#xff0c;与官网的一致&#xff0c;没有问题&#xff1a; #parcel sha值 [rootlocalhost bigdata]# sha1sum CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.pa…

Arrays.sort()用来自定义排序的使用

compareTo方法 public int compareTo(String anotherString)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前&#xf…

gvim配置

手把手教你把Vim改装成一个IDE编程环境(图文) By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需…

双向队列

题目描述 想想双向链表……双向队列的定义差不多&#xff0c;也就是说一个队列的队尾同时也是队首&#xff1b;两头都可以做出队&#xff0c;入队的操作。 现在给你一系列的操作&#xff0c;请输出最后队列的状态&#xff1b; 命令格式&#xff1a; LIN X X表示一个整数&#…

Dubbo调用时报错Invalid token Forbid invoke remote service interface

dubbo开启token服务后&#xff0c;使用集群容错策略为FailoverClusterInvoker&#xff0c;当出现服务调用失败进行转移&#xff0c;重试其它服务器时&#xff0c;会出现token invalid错误&#xff0c;provider会拒绝服务调用。 原因&#xff1a; 消费端&#xff1a; 1、com.…

蓝桥杯-方格填数

方格填数 如下的10个格子 ––– | | | | –––– | | | | | –––– | | | | ––– &#xff08;如果显示有问题&#xff0c;也可以参看【图1.jpg】&#xff09; 填入0~9的数字。要求&#xff1a;连续的两个数字不能相邻。 &#xff08;左右、上下、对角都算相邻…

Gvim开发环境配置笔记--Windows篇

环境&#xff1a;Windows7 旗舰版 1、安装Gvim7.3 &#xff1a; 下载地址http://www.vim.org/download.php#pc。 2、安装中文帮助&#xff1a;vimcdoc-1.8.0-setup.exe 地址http://vimcdoc.sourceforge.net/ 会自动识别gvim的安装路径&#xff0c; 安装完后&#xff0c;gvim菜单…

Grafana : 前端页面 通过API Key免登录访问Grafana

文章目录场景一是使用匿名登陆&#xff0c;最简单方便二是使用grafana颁发一个API Key。场景 平台要集成grafana&#xff0c;想绕过用户登录&#xff0c;目前知道有2个方法。 前提&#xff1a;先修改配置defaults.ini/grafana.ini允许嵌入 allow_embedding true一是使用匿名…

数据结构实验之队列一:排队买饭

题目描述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是很聪明的,直接奔政通超市,哈哈,确实,政通超市里面也卖饭,有好几种菜,做的比食堂好吃多了,价格也不比食堂贵,并且买菜就送豆浆,吸引了不少童鞋。所以有时吧&#xff0c;人还是很多的&#xff0c;排队是免…

vim配置vimrc详解

一、vim/gvim 环境变量 1. vimrc的存放位置&#xff1a; 系统 vimrc 文件: "$VIM/vimrc" 用户 vimrc 文件: "$HOME/.vimrc" 用户 exrc 文件: "$HOME/.exrc" 系统 gvimrc 文件: "$VIM/gvimrc" 用户 gvimrc 文件: "$HOME/.g…

CentOS 使用iso镜像安装本地 yum 源

文章目录下载服务器镜像挂载iso镜像修改yum源挂载iso到系统中查看挂载状态挂载完成后清缓存安装服务测试下载服务器镜像 下载与我们服务器相同版本的服务器镜像。 查看当前服务器版本 [rootiZot101s4kxuygvttz67vjZ yum.repos.d]# cat /etc/redhat-release CentOS Linux re…