原题链接:oj3344

数据结构实验之二叉树五:层序遍历

Description

已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。

Input
输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。

Output
输出二叉树的层次遍历序列。

Sample
Input

2
abd,eg,cf,
xnl,i,u,

Output
abcdefg
xnuli

第一次提交的时候出现了 Compile Error提示(编译错误)
错误原因: 函数名为 struct node *build()
使用时出现了 st->l=build(st);

struct node *build()
{struct node *st;if(a[i]==','){i++;return NULL;}else{st=(struct node *)malloc(sizeof(struct node));st->data=a[i++];st->l=build(st);st->r=build(st);}return st;
}

二叉树例子:

A
B
C
D
E
F
I
层次遍历序列:根入队 --> 子树入队 根出队–>子树结点变为根 它的子树入队 它出队
A
.A. BC
.AB. CDE
.ABC. DEFI

正确代码:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char a[100];
int i;
struct node
{int data;struct node *l,*r;
};struct node *build() //存
{struct node *st;if(a[i]==','){i++;return NULL;}else{st=(struct node *)malloc(sizeof(struct node));st->data=a[i++];st->l=build();st->r=build();}return st;
}void pull(struct node *st) //层次
{struct node *q[100];int num1=0,num2=0;q[num1++]=st;while(num1>num2){if(q[num2]!=NULL)//这里!{printf("%c",q[num2]->data);q[num1++]=q[num2]->l;q[num1++]=q[num2]->r;}num2++;}
}int main()
{int t;scanf("%d",&t);while(t--){i=0;struct node *st;scanf("%s",a);st=build();pull(st);printf("\n");}return 0;
}

数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次相关推荐

  1. 二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法)

    二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法) 层序遍历 /** * 树结构定义 */ private static class BinaryNode<T> {BinaryN ...

  2. 二叉树的层序遍历和前中后序遍历代码 迭代/递归

    二叉树的层序遍历和前中后序遍历代码 迭代/递归 只记录代码.思路参考代码随想录:https://github.com/youngyangyang04/leetcode-master/blob/mast ...

  3. 代码随想录【day 14 二叉树】| 层序遍历 226.翻转二叉树 101.对称二叉树

    代码随想录[day 14 二叉树]| 层序遍历 226.翻转二叉树 101.对称二叉树 层序遍历 卡哥文解 视频讲解 题目链接:102.二叉树的层序遍历 解题思路 代码实现 题目链接:107.二叉树的 ...

  4. 代码随想录算法训练营第十五天 | 102. 二叉树的层序遍历 | 226.翻转二叉树 | 101. 对称二叉树

    递归三部曲 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 102. 二叉树的层序遍历 题解及想法 解法一 :递归法 class Solution {public List<Lis ...

  5. 二叉树的层序遍历_NC15 求二叉树的层序遍历

    NC15 求二叉树的层序遍历 考过的企业 - 小米 题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树 ...

  6. 【LeetCode】【HOT】102. 二叉树的层序遍历(队列)

    [LeetCode][HOT]102. 二叉树的层序遍历 文章目录 [LeetCode][HOT]102. 二叉树的层序遍历 package hot;import java.util.ArrayLis ...

  7. 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先

    前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...

  8. 二叉树的层序遍历 使用队列和不使用队列

    1.使用队列 先将树的根节点入队, 如果队列不空,则进入循环 { 将队首元素出队,并输出它: 如果该队首元素有左孩子,则将其左孩子入队: 如果该队首元素有右孩子,则将其右孩子入队 } C语言代码:vo ...

  9. c++二叉树的层序遍历_leetcode 103. 二叉树的锯齿形层序遍历

    按层次遍历,记录下对应节点的val和所在层,然后经过一定变换得到输出.python代码如下: # Definition for a binary tree node.# class TreeNode( ...

最新文章

  1. C#中 int.TryParse 的用法
  2. 自定义弹出框控件制作及示例
  3. 使用subprocessm模块管理进程
  4. BlockChain:Python一步一步实现(流程最清楚)区块链底层技术流程图(理解一目了然,值得收藏)
  5. docker部署下的nginx负载均衡时,无法获取真实ip的问题
  6. jumpserver 节点部署_Jumpserver 部署
  7. PHP ThinkPHP学习第一步(搭建及认识ThinkPHP入口文件)
  8. IBM将推NVMe存储解决方案
  9. mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量
  10. javaweb学习总结(四十六)——Filter(过滤器)常见应用
  11. vscode 路径宏_VSCode宏怎么设置?VSCode宏的添加方法!
  12. OJ 2311 Problem A Orange
  13. Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(2)
  14. SAP FI 科目代码
  15. VMware Tools
  16. 目前世界上最主要的导航电子地图数据标准/格式
  17. 读完本篇文章就会掌握hive over窗口函数的使用附带习题
  18. linux 系统配置接收华为交换机trap
  19. [源码] Spark如何划分Stage
  20. 靶场笔记-covfefe

热门文章

  1. 超人:钢铁之躯 Man of Steel (2013)
  2. 灵格斯(lingoes)词霸 + Acapela破解语音包(法语,德语,西班牙语,美国英语)
  3. nginx+php部署环境
  4. android帧动画tulian,Flash小游项目任务书.doc
  5. 【软件下载】Excel下载 word下载 官方 官网下载 原始镜像 开发工具 开发软件下载
  6. 按键精灵---大漠鼠标真实移动轨迹
  7. Python安装火狐浏览器驱动
  8. OracleDataAdapter.Fill()处于无限等待中 【已解决】
  9. python在手,天下我有!
  10. 【软件测试】PDM、PTM、IPD介绍(捣鼓一晚上的血泪知识)