多叉树OJ思路 ,无代码

文章讲述了在编程中处理二叉树和多叉树的几种常见操作,如先序遍历、后根遍历、双亲表示法与孩子链表转换,以及使用邻接表和DFS算法解决问题的方法。
摘要由CSDN通过智能技术生成

也是第一次写森林树,确实不是很拿捏,受二叉树的影响太多了;你会发现这个多叉树一般不建链式结构的,都是数组式的比如“双亲表示法”,让子节点可以找到父节点这样。

有疑问欢迎交流,作者我也是蒟蒻,每个月都会在线吧doge

大部分都是我组长讲的方法,挺系统的(毕竟前几个题都是邻接表做,非常香)

除了题目都是思路哦

1.邻接表

【id:188】【20分】A. 树的先序遍历(双亲转先序)

时间限制1s

内存限制128MB

题目描述

给出一棵树的双亲表示法结果,用一个二维数组表示,位置下标从0开始,如果双亲位置为-1则表示该结点为根结点

编写程序,输出该树的先根遍历结果。

输入

第一个输入t,表示有t棵树

接着每棵树输入3行:

第1行输入n,表示树有n个结点

第2行输入n个英文字母,表示每个树结点的数值

第3行输入n个整数,表示每个结点的双亲在数组的下标

以此类推输入下一棵树

输出

共输出t行,每行输出一棵树的先根遍历结果

方法:

2.和第一题用一个方法

【id:187】【20分】B. 树的后根遍历(孩子链表法)

时间限制1s

内存限制128MB

题目描述

根据树的孩子链表表示法构建一棵树,并输出树的后根遍历

下标位置从0开始

输入

第一行输入两个参数,第一个参数n表示树有n个结点,第二个参数r表示根结点的数组下标

接着n行,每行先输入一个结点的数值(用单个字母表示),再输入结点的孩子的下标,最后以-1结尾

如果该结点没有孩子,则一行只输入结点的数值和-1

输出

只有一行输出,树的后根遍历结果

 3.看清楚题是二叉树,然后可以试着写写数组表示的

【id:186】【20分】C. 树结构转换(先序转双亲)

时间限制1s

内存限制128MB

题目描述

给出一棵二叉树的特定字符先序遍历结果(空子树用字符'#'表示),构建该二叉树,并输出该二叉树的双亲表示法结果

双亲表示法的数组下标从0开始,根结点必定是在下标0元素,且根结点的双亲下标为-1,左右孩子按下标递增顺序排列,

结点下标是层次遍历顺序。

输入

第一个输入t,表示有t棵二叉树

接着t行,每行输入含特定字符的二叉树先序遍历序列

输出

共输出2t行

每棵二叉树输出两行,第一行输出各个结点的数值,第二行输出各结点的双亲下标

大神的数组表示二叉树:

我自己就是建的二叉树,然后两个队列一层层的输出

(一开始用的栈发现错了,所以队列的名字是st)

两个队列的代码:一个队列装着一层树,然后一个个出,队列的时候把子树压入到另一个队列

(突然发现一个队列就可以完成题目任务,不过两个队列可以把层弄清楚)

4.邻接表直接做

【id:381】【20分】D. 树的双亲结构转孩子链表结构

时间限制1s

内存限制128MB

题目描述

给出一棵树的双亲表示法结果,用一个二维数组表示,位置下标从0开始,如果双亲位置为-1则表示该结点为根结点

编写程序,输出该树的孩子链表表示法结果。

输入

输入一棵树的双亲表示法,共3行:

第1行输入n,表示树有n个结点

第2行输入n个英文字母,表示每个树结点的数值

第3行输入n个整数,表示每个结点的双亲在数组的下标

输出

按输入的结点顺序输出n行,每行输出结点孩子链表结果,先输出结点的数值,再输出结点的孩子的下标,以空格隔开,最后一个数据后面也有空格

如果链表为空则输出结点数值后,输出-1带空格,具体看样式

6.最好好好想想DFS,就弄层呗

【id:200】【10分】F. 先序+中序还原二叉树

时间限制1s

内存限制128MB

题目描述

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。

输入

输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。

输出

输出为一个整数,即该二叉树的高度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SJTU OJ是上海交通大学在线评测系统的简称。它是一个提供给学生练习编程和解决问题的平台。 首先,学生需要注册并登录SJTO OJ系统。系统会为每个注册用户配一个唯一的用户ID和密码,以保证账户安全。 上机编程练习是SJTO OJ的主要功能之一。学生可以在系统中选择不同的编程题目,例如算法题、数据结构题、数学题等等。每道题目都附带了详细的题目描述和输入输出样例。学生需要根据题目要求,编写相应的程序,并在系统中提交代码。系统会自动编译和运行学生提交的代码,并对其进行评测。评测结果包括通过样例的数量、程序运行时间、内存占用等信息。 除了上机编程练习,SJTO OJ还提供了一些其他功能。例如,学生可以查看自己的解题记录和成绩,统计自己的编程能力和进步情况。他们可以参加在线比赛,与其他学生一同竞争,提高自己的编程水平。 作为一名学生,使用SJTO OJ可以有效地提升自己的编程技能和解决问题的能力。通过参与编程练习和比赛,学生可以不断学习新知识,发现并改进自己的不足之处。此外,SJTO OJ还为学生提供了一个交流的平台,他们可以与其他学生享自己的解题思路和经验。 总之,SJTO OJ是一个非常有用的在线评测系统,通过使用它,学生可以提高自己的编程能力,并享受与其他同学交流和竞争的乐趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值