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

PTA 树与二叉树 1 二叉链树的创建与遍历

作者 张鏖烽

单位 湖南工程学院计算机与通信学院

从键盘输入一个二叉树的括号表达式,编程实现下列函数:

(1)CreateLinkBT(bt,ctr):扫描二叉树的括号表达式ctr,创建一个二叉链树bt;

(2)PreOrder(bt):先序遍历二叉链树bt,输出其遍历结果

(3)InOrder(bt):中序遍历二叉链树bt,输出其遍历结果

(4)PostOrder(bt):后序遍历二叉链树bt,输出其遍历结果

函数接口定义:

void CreateLinkBT(BTNode * &b,char str[]);//创建二叉链树 void PreOrder(BTNode *b);//先序遍历 void InOrder(BTNode *b);//中序遍历 void PostOrder(BTNode *b);//后序遍历

其中b为二叉链树,str[]为存储二叉树括号表达式的数组

裁判测试程序样例:

#include<stdio.h> #include<malloc.h> #include<stdbool.h> #define MaxSize 100 typedef struct Node{ char data; struct Node *lchild,*rchild; }BTNode; void CreateLinkBT(BTNode * &b,char str[]);//创建二叉链树 void PreOrder(BTNode *b);//先序遍历 void InOrder(BTNode *b);//中序遍历 void PostOrder(BTNode *b);//后序遍历 int main() { char ctr[MaxSize]; scanf("%s",ctr); BTNode *bt; CreateLinkBT(bt,ctr); printf("先序遍历结果:"); PreOrder(bt); printf("\n中序遍历结果:"); InOrder(bt); printf("\n后序遍历结果:"); PostOrder(bt); } /* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

c从键盘输入二叉树的括号表达式形式:

G(B(D(A,H),C),E(F(J),I(,K)))

输出样例:

在这里给出相应的输出。例如:

先序遍历结果:G B D A H C E F J I K 中序遍历结果:A D H B C G J F E I K 后序遍历结果:A H D C B J F K I E G

参考代码:

void CreateLinkBT(BTNode *&b,char str[]){ BTNode*stack[MaxSize]; BTNode*a=NULL; int i=0,k,t=-1; b=NULL; while(str[i]!='\0'){ char ch=str[i++]; if(ch=='('){ stack[++t]=a; k=1; }else if(ch==',') k=2; else if(ch==')') t--; else{ a=(BTNode*)malloc(sizeof(BTNode)); a->data=ch; a->lchild=a->rchild=NULL; if(!b) b=a; else if(k==1) stack[t]->lchild=a; else if(k==2) stack[t]->rchild=a; } } } void PreOrder(BTNode *b) { if (b){ printf("%c ",b->data); PreOrder(b->lchild); PreOrder(b->rchild); } } void InOrder(BTNode *b) { if (b){ InOrder(b->lchild); printf("%c ",b->data); InOrder(b->rchild); } } void PostOrder(BTNode *b) { if (b) { PostOrder(b->lchild); PostOrder(b->rchild); printf("%c ",b->data); } }
http://www.jsqmd.com/news/475933/

相关文章:

  • Funkey-D1s:基于全志D1s/T113-S3的RGB与MIPI双模嵌入式显示系统设计
  • 科研党必备:Mulimg Viewer 一键生成SCI论文对比图的保姆级教程
  • 赶deadline必备! 降AIGC软件 千笔·降AIGC助手 VS 知文AI,专科生专属神器!
  • 【文献阅读】PPLM——让语言模型真正“理解“蛋白质之间的对话
  • 【开源APPs】Github开源应用集锦
  • 导师严选!最强的降AI率软件 —— 千笔·降AI率助手
  • 目标:4月大厂暑假实习投递第二轮
  • 医生也能懂的ConDSeg指南:如何用AI精准分割息肉/腺体?
  • TA-Lib MACD实战避坑指南:Python金融分析中常见的5个参数设置错误
  • STM32F411 USB声卡实战:从噪音消除到中文名自定义全攻略
  • 手把手教你用Proteus 8 Professional搭建仿真电路:从原理图到仪表调试
  • 控制理论前置知识——卷积
  • 权重衰减参数的工作原理,以及对训练的影响
  • 阿里小云KWS模型与语音合成系统的无缝集成
  • 最小堆模拟
  • 2026别错过!AI论文写作软件 千笔·专业论文写作工具 VS 锐智 AI,专科生专属神器!
  • 两会热议AI安全:从被动防御到主动智能协同
  • MusePublic惊艳案例展示:看AI如何画出故事感时尚人像
  • Kettle8.2过滤记录组件实战:如何用Excel输出实现数据分流(附完整配置截图)
  • Qwen3-0.6B-FP8模型应用:Dify平台集成实战指南
  • 基于 YOLOv11 的智能化遥感图像目标检测
  • 具身智能实战:如何用AIBOX打造你的第一个无人化智能体(附避坑指南)
  • znew 命令超详细使用文档(.Z 转 .gz 格式转换工具)
  • Leather Dress Collection效果展示:Leather Beltbra MicroShorts微短裤皮革拉伸动态模拟
  • Cadence Virtuoso LVS检查全流程:数模混合版图从GDS导入到最终验证
  • Qt 实现三维坐标系的方法
  • CLIP-GmP-ViT-L-14实战落地:医疗影像报告关键词-检查图像语义检索
  • Windows进程通信实战:用CreateFileMapping实现内存共享(附完整代码示例)
  • Gemma-3-12b-it内容创作场景:自媒体图文选题+配图描述生成案例
  • 打开COMSOL时总想着搞点有意思的声场操控,这次咱们来折腾三维相控阵的声镊系统。实验室里那些悬浮的微粒子在声场里跳舞的样子,可比刷短视频带劲多了