当前位置: 首页 > news >正文

【PTA数据结构 | C语言版】根据层序序列重构二叉树

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

请编写程序,根据给定二叉树的层序序列化结果,重构二叉树,并输出其层序遍历结果。

输入格式:
输入首先给出一个不超 20 的正整数 n,随后一行给出 n 个层序序列的元素。其中键值都是不超过 9 位的正整数,空结点对应符号 #。

输出格式:
输出二叉树的层序遍历结果,每个数字占一行。

输入样例:
11
1 2 3 # 4 5 # # # # #

输出样例:
1
2
3
4
5

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct TreeNode {int data;struct TreeNode *left;struct TreeNode *right;
} TreeNode;TreeNode* createNode(int data) {TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));node->data = data;node->left = NULL;node->right = NULL;return node;
}TreeNode* buildTree(char** tokens, int n) {if (n == 0 || strcmp(tokens[0], "#") == 0) return NULL;TreeNode* root = createNode(atoi(tokens[0]));TreeNode* queue[1000];int front = 0, rear = 0;queue[rear++] = root;int i = 1;while (i < n && front < rear) {TreeNode* current = queue[front++];// 处理左子节点if (i < n && strcmp(tokens[i], "#") != 0) {current->left = createNode(atoi(tokens[i]));queue[rear++] = current->left;}i++;// 处理右子节点if (i < n && strcmp(tokens[i], "#") != 0) {current->right = createNode(atoi(tokens[i]));queue[rear++] = current->right;}i++;}return root;
}void levelOrderTraversal(TreeNode* root) {if (root == NULL) return;TreeNode* queue[1000];int front = 0, rear = 0;queue[rear++] = root;while (front < rear) {TreeNode* current = queue[front++];printf("%d\n", current->data);if (current->left != NULL) queue[rear++] = current->left;if (current->right != NULL) queue[rear++] = current->right;}
}void freeTree(TreeNode* root) {if (root == NULL) return;freeTree(root->left);freeTree(root->right);free(root);
}int main() {int n;scanf("%d", &n);getchar();  // 消耗换行符char input[1000];fgets(input, sizeof(input), stdin);char* tokens[100];int count = 0;char* token = strtok(input, " \n");while (token != NULL && count < n) {tokens[count++] = token;token = strtok(NULL, " \n");}TreeNode* root = buildTree(tokens, n);levelOrderTraversal(root);freeTree(root);return 0;
}

文章转载自:
http://astigmatic.wkuuf.cn
http://biomolecule.wkuuf.cn
http://callus.wkuuf.cn
http://bacca.wkuuf.cn
http://avengement.wkuuf.cn
http://avoir.wkuuf.cn
http://appendiceal.wkuuf.cn
http://breakbone.wkuuf.cn
http://campaniform.wkuuf.cn
http://ampelopsis.wkuuf.cn
http://borzoi.wkuuf.cn
http://biocrat.wkuuf.cn
http://bottleneck.wkuuf.cn
http://beeves.wkuuf.cn
http://canoe.wkuuf.cn
http://adipocellulose.wkuuf.cn
http://catalectic.wkuuf.cn
http://battlewagon.wkuuf.cn
http://airbrush.wkuuf.cn
http://cessionary.wkuuf.cn
http://autumn.wkuuf.cn
http://bpa.wkuuf.cn
http://branchial.wkuuf.cn
http://almsgiving.wkuuf.cn
http://benzosulphimide.wkuuf.cn
http://bearwood.wkuuf.cn
http://baume.wkuuf.cn
http://bookstore.wkuuf.cn
http://angiology.wkuuf.cn
http://chevron.wkuuf.cn
http://www.dtcms.com/a/280196.html

相关文章:

  • 陶瓷基复合材料烧结:工业软件国有化在孔隙率控制仿真中的替代
  • [设计模式]C++单例模式的几种写法以及通用模板
  • HTTP请求
  • 医疗数据分析中标准化的作用
  • sglang笔记1: 后端详细阅读版
  • 配置使用SSH与VScode进行连接
  • LLM在腾讯游戏数据分析的实战
  • 论文阅读:arxiv 2025 A Survey on Data Contamination for Large Language Models
  • 深度学习-参数初始化、损失函数
  • 自然语言指令驱动的工业机器人协同学习系统:大语言模型如何重塑智能体协作范式
  • 流媒体直播分发服务器
  • 大语言模型零样本情感分析实战:无需机器学习训练,96%准确率实现指南
  • 小型客厅如何装修设计?
  • 2025-07-15 李沐深度学习6——Softmax回归
  • 【C++篇】STL的关联容器:map和set(上篇)—— map和set的介绍和使用
  • Dify的默认端口怎么修改
  • Spring Security 实践及源码学习
  • 焊接机器人智能节气阀
  • springboot3.5.3依赖学习
  • [BrowserOS] Nxtscape浏览器核心 | 浏览器状态管理 | 浏览器交互层
  • 响应式编程入门教程第三节:ReactiveCommand 与 UI 交互
  • 【HarmonyOS】ArkUI-X 跨平台框架入门详解(一)
  • HarmonyOS从入门到精通:自定义组件开发指南(八):组件插槽 (Slot) 的魅力
  • LabVIEW电铲电机远程监测
  • JVM——编译执行于解释执行的区别是什么?JVM使用哪种方式?
  • Postgres介绍(PostgreSQL)(开源对象关系型数据库管理系统)(与Mysql对比)
  • 如何加固Web服务器的安全?
  • 网页源码保护助手 海洋网页在线加密:HTML 源码防复制篡改,密文安全如铜墙铁壁
  • 021_自然语言处理应用
  • 网络劫持对用户隐私安全的影响:一场无形的数据窃取危机