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

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

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

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

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

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

 

不同的数据如何选取对应的数据结构存储_第1张图片

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

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

不同的数据如何选取对应的数据结构存储_第2张图片

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

不同的数据如何选取对应的数据结构存储_第3张图片

 

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

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

不同的数据如何选取对应的数据结构存储_第4张图片

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

不同的数据如何选取对应的数据结构存储_第5张图片

 

 

 

 

 

 

 

你可能感兴趣的:(数据结构)