首页 > 其他分享 >P 7-1 二叉树的遍历!(简单)

P 7-1 二叉树的遍历!(简单)

时间:2024-10-29 23:45:20浏览次数:3  
标签:node 输出 遍历 int 样例 二叉树 简单

二叉树作为FDS课程最核心的数据结构之一,要求每个人都掌握!

这是一道简单的二叉树问题!

我们将给出一颗二叉树,请你输出它的三种遍历,分别是先序遍历,中序遍历,后序遍历!

输入格式:

二叉树将以这样的形式给出:

第一行给出一个正整数N(N<=100),表示二叉树上的节点个数!

接下来N行,每行包含三个整数,i,l,r,分别代表第i个节点的左右孩子!

如果它的左/右孩子为空,则在对应位置给出-1!

题目保证1是根节点!

输出格式:

请你输出它的三种遍历!

第一行输出先序遍历,第二行输出中序遍历,第三行输出后序遍历!

每行末尾无多余空格!

输入样例:

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

3
1 2 3
2 -1 -1
3 -1 -1

输出样例:

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

1 2 3
2 1 3
2 3 1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

 

#include <stdio.h>
#include <string.h>
int L[111], R[111];
void preorder(int node)
{
   printf("%d ", node);
   if (L[node] != -1)
      preorder(L[node]);
   if (R[node] != -1)
      preorder(R[node]);
}
void inorder(int node)
{
   if (L[node] != -1)
      inorder(L[node]);
   printf("%d ", node);
   if (R[node] != -1)
      inorder(R[node]);
}
void suforder(int node)
{
   if (L[node] != -1)
      suforder(L[node]);
   if (R[node] != -1)
      suforder(R[node]);
   printf("%d ", node);
}
int main()
{
   int n, j, l, r;
   scanf("%d", &n);
   for (int i = 1; i <= n; i++)
   {
      scanf("%d%d%d", &j, &l, &r);
      L[j] = l;
      R[j] = r;
   }
   preorder(1);
   putchar('\n');
   inorder(1);
   putchar('\n');
   suforder(1);
   putchar('\n');
   return 0;
}

 

输入样例:
3
1 2 3
2 -1 -1
3 -1 -1

输出样例:
1 2 3
2 1 3
2 3 1

 

标签:node,输出,遍历,int,样例,二叉树,简单
From: https://blog.csdn.net/2401_85947543/article/details/143351463

相关文章

  • IDEA如何在线安装一个插件,超简单
    前言我们在使用IDEA开发Java应用时,经常是需要安装插件的,这些各种各样的插件帮助我们快速的开发应用,今天,就来介绍下如何在IDEA中安装插件。那么,我们该如何安装插件呢?如何安装插件首先,我们打开设置面板。然后,我们点击【Plugins】,我们再在右侧点击【Marketplace】,在输入框里面......
  • CSP-S 2024 简单题
    CSP-S2024简单题以下均为考场做法。T1决斗(duel)考虑贪心,按照攻击力\(a_i\)排序,从小到大使用所有怪物进行攻击,每只怪物攻击一个在场且能击杀的怪物中,攻击力最大的一个。这样显然最优,因为每一次攻击都被完美的利用到了。于是设\(c_x\)表示满足\(a_i=x\)的\(i\)的......
  • 代码随想录day14 二叉树(2)
    文章目录day11栈与队列(2)栈与队列的总结day13二叉树(1)day14二叉树(2)day11栈与队列(2)逆波兰表达式求值https://leetcode.cn/problems/evaluate-reverse-polish-notation/逆波兰表达式,也就是后缀表达式,所谓后缀就是指运算符写在后面。平常使用的算式则是一种......
  • 最简单的pyinstaller打包exe方式
    1.背景在实际工作过程中,python项目文件完成开发后,存在打包成exe使用的需求,而如何正确并且快捷的实现打包尤为重要,目前python打包的方式很多,包括py2exe,pyinstaller,cx_Freeze,nuitka以及Pyarmor,本次只针对pyinstaller进行说明。PyInstaller是一个用于将Python应用程序打包成独......
  • 集合操作大揭秘!遍历、增删改查一次搞懂
    在Java的集合世界里,想对集合里的数据进行操作其实很简单,只要学会了遍历、增删改查(增加、删除、修改、查询),就能轻松驾驭List、Set、Map等集合。今天我们就来用大白话把这些操作讲清楚,一次搞懂!1.遍历:逐个访问集合中的每个元素遍历就像数清楚你兜里有几颗糖,每颗糖都要摸一......
  • 颜色选择器的简单实现(附完整代码)
    颜色选择器的简单实现使用渐变背景实现一个颜色选择器关键知识点HSV(Hue,Saturation,Value)使用渐变色实现色相选择器使用3个背景叠加实现Saturation(饱和度),Value(色调,纯度)的选择关键代码色相渐变背景background:linear-gradient(180deg,red0,#ff017%,#0......
  • input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序
    往期内容本专栏往期内容:input子系统的框架和重要数据结构详解-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客编写一个简单的Iinput_dev框架-CSDN博客GPIO按键驱动分析与使用:input_dev......
  • Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备
    UnityV3初步使用——为我的.NET项目从简单三层架构转到IOC做准备 【前言】看过本博客的都知道(说得好像是热门博客似的,我真没法控制自己的臭美之情),本人喜欢在进入正题前总会喜欢搞点前奏,那么此文将不会再胡言乱语。马上开始。。。【Unity简介】在.NET中是一种非常流行......
  • QMetaObject::invokeMethod简单应用
     1.概要QMetaObject::invokeMethod 是Qt框架中的一个静态方法,用于在运行时调用对象的成员函数。这个方法提供了一种动态调用方法的方式,不需要在编译时知道具体的方法名或参数。QMetaObject::invokeMethod 可以用于调用任何对象的任何可调用方法,包括信号、槽和普通成员函......
  • javaweb基于SSH开发简单的新闻文章管理系统源码(前台+后台) 课程设计 大作业
    作品编号:1113数据库:mysql后端技术:SSH......