不同的数据如何选取对应的数据结构存储

这两天学完STL之后发现知识都在脑子里,但是到了做题有时候就是不知道该选择什么样的数据结构了- -,结合自己的解题思路和liuchuo在gitHub上的题解来整理的- -,可能不会分类,只是给自己做一个记录把。

liuchuo在gitHub题解:https://github.com/liuchuo/PAT

还有我们学校acm网站的题:https://acm.sdut.edu.cn/onlinejudge3/

新OJ 的风格太心水了!!!喜欢++

1.数据结构实验之二叉树一:树的同构

 

首先我们要将每一条结点的信息存储在一起,还要能实现在建树时访问第i个结点,所以我们选取了结构体存储每一条结点的信息。

现在我们能实现在建树的时候传值n,就能访问到第n个结点对应的左子树、右子树了。

接下来的问题就是我们如何去开始建树,我们看到题目的信息,左右子树存储的实际上是结点的编号,如果不是‘-’我们可以通过给每个给出的结点编号一个给定的数组,如果是1就是有这个结点。我们把所有左右孩子标记了,n个结点中没有被标记的就是根,从根开始遍历建树。

 

.........很麻烦,都有点绕不过来,后来发现一种解法直接不用建树,哭泣

我们不用建树直接比较结点的data数据,如果相等就比较左右孩子是否是一样的

还是利用了上面说的数据结构存储结点信息,也是为了能访问第i个结点的所有信息。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值