当前位置:网站首页>6-11 Preorder output leaf nodes (15 points)
6-11 Preorder output leaf nodes (15 points)
2022-08-10 18:18:00 【jie3606】
本题要求按照先序遍历的顺序输出给定二叉树的叶结点.
函数接口定义:
void PreorderPrintLeaves( BinTree BT );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
函数PreorderPrintLeaves
应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符.
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree CreatBinTree(); /* 实现细节忽略 */
void PreorderPrintLeaves( BinTree BT );
int main()
{
BinTree BT = CreatBinTree();
printf("Leaf nodes are:");
PreorderPrintLeaves(BT);
printf("\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输出样例(对于图中给出的树):
Leaf nodes are: D E H I
解答
void PreorderPrintLeaves(BinTree BT){
if(BT == NULL) return;
if(BT->Left == NULL && BT->Right == NULL)
printf(" %c",BT->Data);
PreorderPrintLeaves(BT->Left);
PreorderPrintLeaves(BT->Right);
}
完整的代码
完整的代码
#include <stdio.h>
#include <stdlib.h>
typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree CreatBinTree(); /* 实现细节忽略 */
void PreorderPrintLeaves( BinTree BT );
int main()
{
BinTree BT = CreatBinTree();
printf("Leaf nodes are:");
PreorderPrintLeaves(BT);
printf("\n");
return 0;
}
BinTree CreatBinTree() {
ElementType dada;
scanf("%c",&dada);
if(dada =='-'){
return NULL;
}
BinTree root = (BinTree) malloc(sizeof (struct TNode));
root->Data = dada;
root->Left = CreatBinTree();
root->Right = CreatBinTree();
return root;
}
void PreorderPrintLeaves(BinTree BT){
if(BT == NULL) return;
if(BT->Left == NULL && BT->Right == NULL)
printf(" %c",BT->Data);
PreorderPrintLeaves(BT->Left);
PreorderPrintLeaves(BT->Right);
}
边栏推荐
猜你喜欢
随机推荐
高手问答第 290 期 —— SaaS产品经理从菜鸟到专家
【ARK UI】HarmonyOS ETS的引导页的实现
Making Pre-trained Language Models Better Few-Shot Learners
CAS客户端对接
基于AWS构建云上数仓第二步:AWS常见服务简介
php7中使用“??”运算符
三坐标雷达显示软件 SPx Viewer-3D
AVFrame related api memory management
机器人控制器编程整理汇总-辞旧迎新-
21天打卡挑战学习MySQL——《MySQL表管理》第二周 第五篇
Toronto Research Chemicals 双(乙酰丙酮)铂(II)
AVFrame相关api内存管理
MongoDB教程
本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执
容器化 | 在 S3 实现定时备份
破解校园数字安全难点,联想推出智慧教育安全体系
机器人控制器编程实践指导书旧版-实践八 机器人综合设计
【Web3 系列开发教程——创建你的第一个 NFT(8)】如何开发一个成功的 NFT 项目 | NFT 社区建设技巧