6-24 打印二叉树指定层次结点 (6 分)

该博客介绍如何按从左到右的顺序打印二叉树的指定层次结点。提供了函数接口定义,二叉树结构及裁判测试程序的输入输出样例,并强调理解这种思路的重要性。

本题要求实现按从左到右顺序打印二叉树的指定层次的结点序列。

函数接口定义:


void PrintLevel(BiTree T,int n);

T是二叉树树根指针,n为指定打印的层次,PrintLevel函数按从左到右顺序输出二叉树的指定层次的结点序列,格式为一个字符后面跟着一个空格。

其中BinTree结构定义如下:

typedef char ElementType;
typedef struct BiTNode {
   
   
    ElementType data;
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode, *BiTree;

裁判测试程序样例:


实现按层从左到右打印二叉树指定层次结点,我们可以采用**递归方式**来实现。基本思路是: 1. 从根节点开始,递归地向下访问每一层; 2. 当当前层次等于目标层次时,输出当前节点的数据; 3. 如果当前层次未达到目标层次,则继续递归访问左右子树; 4. 注意控制输出格式,每个字符后跟一个空格。 以下是完整的实现代码: ```c #include <stdio.h> typedef char ElementType; typedef struct BiTNode { ElementType data; struct BiTNode *lchild; struct BiTNode *rchild; } BiTNode, *BiTree; // 递归函数打印指定层次的节点 void PrintLevel(BiTree T, int n) { if (T == NULL || n < 1) return; // 当前层次为1时,输出当前节点 if (n == 1) { printf("%c ", T->data); return; } // 递归打印下一层的左右子树 PrintLevel(T->lchild, n - 1); PrintLevel(T->rchild, n - 1); } ``` ### 代码解释: - `if (T == NULL || n < 1) return;`:边界条件判断,如果当前节点为空或层次数无效,直接返回。 - `if (n == 1)`:当递归到目标层次时,打印当前节点数据,并在后面加一个空格。 - `PrintLevel(T->lchild, n - 1);` 和 `PrintLevel(T->rchild, n - 1);`:递归进入下一层,先左后右,保证从左到右顺序。 ### 示例说明: 输入: ``` AB#DF##G##C## 2 ``` 对应的二叉树结构如下(简化): ``` A / \ B C \ D / \ F G ``` - 第2层的节点是 `B` 和 `C`,所以输出为: ``` B C ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值