数据结构-第五章学习小结

  第五章的内容是树和二叉树,引入了很多新的概念,比如结点、度、叶子/终端结点等。树是基本逻辑结构中的一种非线性结构,可以采用链式存储结构或顺序存储结构(这得根据实际问题的增/删/改/查/排操作进行确定)。刚学这一章的时候会觉得有些吃力,树的相关术语、性质很多。但是在理解并记住了之后,联合之前的知识来看就觉得比较轻松了。比如双亲表示法/孩子表示法/孩子兄弟表示法这些存储结构理解之后不需要硬记,根据具体的需要进行调整就好了;树的总体上或者某个数据域是取数组结构还是链表结构也没有硬性的规定,具体用什么最方便还是得看情况。以下是整理出来的一些关键知识点,这样分类记可能没那么容易混淆。

  整个章节中最让我感到难消化的知识点是先序、中序、后序遍历的过程。难点在于同一个思路可以用递归、非递归的方式来写,理解了就还好,但要我自己写的话可能还是会首先递归的算法。最让我眼前一亮的算法是运用了栈模块和队列模块的算法。不得不说加入了这些模块后整个代码显得更加简洁、思路更加清楚。对比了递归和非递归的算法之后,我感觉似乎用递归的算法能解决的问题,运用模块也能解决。但是在层次遍历的过程中可能使用队列模块会更好一些(每一层的结点需要及时按顺序输出的时候)。此外还学到了一个很有用的写法是:把根结点的下标也打包到Tree的结构里,方便后续的操作直接从根结点开始。(适用于需要用到根结点的情况)

  此外,这次做实践题和小测之前都没看过书...以至于代码越写越复杂。记得要用递归,但自己又用了数组的结构,于是就强行去写数组的递归...再看了一遍课本的代码后感觉之前都只是理解了,但没记牢... 下次上完课后得复习一下,还可以提前写思维导图。

  总的来说,我觉得自己在第五章的学习里被动和主动的感觉兼有吧,主要体现在代码调试了很久还是没通过后,又不想继续看了......这个跟时间安排和调试的方法有关啦,我之后会调整好的。学完之后觉得树的这一章节掌握的还行,遍历的算法还是需要多看看多写写。下一章节的内容是图,新的术语和性质比树的更多,而且极容易混淆。现在已经学到6.4了,最大的感受就是看书一定要仔细看,要比上一章节看得更仔细。下一阶段的目标就是掌握好图的这个知识点,尤其是算法的代码。

posted @ 2020-05-28 18:17  黄梓盈  阅读(217)  评论(0编辑  收藏  举报