Part.A 小结&感悟
想起来在这个学期开始前认识的一个学长曾经对我说过,你们下学期会学到一个叫做二叉树的东西,当年我可是饱受折磨啊……
学习之前一直以为是很难理解的一个东西,但是现在发现这一章的知识总体来看非常条理和具体,同时二叉树的数据结构本身确实是存在其难理解的地方的,对于这一章中屡屡出现的递归算法,我总是需要花费大量的时间才能够理解,在想明白之后又开始对人类的智慧产生浓浓的敬佩…
关于这里大量的概念和术语,我这里简单做了一点整理,
Part B 反思&计划
在整理知识结构的过程中也顺便回想了一遍这些知识和概念,其实这些都是最最基础的东西,只要理解了就很容易记住,想学好这部分的内容还是需要大量的编程练习,熟练地实现对应的算法,然后加强对于递归算法的理解和运用能力。
这一章我印象很深刻的编程题目,深入虎穴,老师上课也进行了详细的讲解,我最开始的想法也是构造二维数组,但是这样的算法造成了极大的空间浪费(可以利用类似稀疏矩阵的算法节省空间)这是我没有考虑到的,一个好的程序需要有优秀的空间利用能力,实现效率的最大化,这道题目是一道看似不难实则不容易实现的题目,这也是我的一个问题,光有想法是不行的,需要每一步都能对应实现,就像这道题,在真正上手编程之后屡屡卡住,以后要更加注意思路的梳理。也暴露出我对前面所学知识的综合利用能力还不强(完全没想到利用稀疏矩阵……)
遗憾的是,我最终没能独立完成这道题的编程,以后还会回头再来多回顾这道题目的。
Part C 一些想法&疑问
这是我随手写的一个小小的递归算法
1 void GoThrough(Node T) 2 {3 if(!EmptyTree T) break; //EmptyTree 判断树是否为空4 GoThrough(T.Lchild);5 GoThrough(T.Rchild);6 }
那么如果把3、4行的内容对换,会造成什么样的影响,谢谢老师的解答(我在对递归算法的理解上始终不通顺,希望老师别介意问题太低级了哈哈哈)