学习总结——1.31

题目:P1305 新二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

代码:

#include<stdio.h> 
#include<stdlib.h> 
  
// 定义一个结构体,表示一个程序员  
struct programmer {  
    char lc; // 左孩子  
    char rc; // 右孩子  
} lt[130]; // 创建一个名为lt的数组,存储130个程序员  
  
char h, h1; 
  
// 定义一个递归函数,用于遍历二叉树并打印每个节点的字符  
void sm(char x) {  
    if (x == '*') return; // 如果当前节点是'*',则返回,不继续遍历  
    printf("%c", x); // 打印当前节点的字符  
    sm(lt[x].lc); // 递归遍历左孩子  
    sm(lt[x].rc); // 递归遍历右孩子  
}  
  
int main() {  
    int n; // 定义整数n,表示要输入的程序员数量  
    scanf("%d", &n); // 输入n的值  
    scanf(" %c", &h1); // 输入第一个程序员的字符  
    scanf(" %c", &lt[h1].lc); // 输入第一个程序员的左孩子字符  
    scanf(" %c", &lt[h1].rc); // 输入第一个程序员的右孩子字符  
    for (int i = 2; i <= n; i++) {  
        scanf(" %c", &h); // 输入当前程序员的字符  
        scanf(" %c", &lt[h].lc); // 输入当前程序员的左孩子字符  
        scanf(" %c", &lt[h].rc); // 输入当前程序员的右孩子字符  
    }  
    sm(h1); // 从第一个程序员开始遍历整棵二叉树并打印每个节点的字符  
    return 0; 
}

解题思路:构建一个二叉树,其中每个节点是一个程序员,节点的左孩子和右孩子表示该程序员的孩子。然后,代码从第一个程序员开始遍历整棵树,并打印每个节点的字符。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值