本文參加CSDN博客大赛,假设你喜欢请投一票,很感谢


这种方法有点邪门。和大家在课堂上学的有点不一样。所以blog的名字取得有点邪乎。

一般的程序猿应聘技术类的笔试都会有一道题目,那就是树的遍历(前序遍历,中序遍历和兴许遍历)。这里教大家玩点新奇的,

可能和平时大家学的有点不一样。可是绝对是在考场上解决这个问题的神器,由于一个字快。能够帮你节省时间做其它的题目。

喜欢的小伙伴记得点赞啊。(*^__^*) 

                                                     

一.中序遍历
这个是最简单的,什么是中序遍历,那就是把我们的树压扁了就能够得到我们的中序遍历,所以中序遍历就是DBGEHACIJF。
什么是把树压扁了呢?把每个节点想象成一个滑轮,然后把它以中间的节点为中心压扁这个树,能够把整个树折叠成一条

直线,就想象成把这个树压扁了。

                                                    

                                                             

以此类推,继续把整个树都压扁。

                                                           


再把左子树以B为中心压扁得到序列DBGEH。

在这里我们能够把E这个树看做是一个总体E’,压扁之后是DBE’,当中E’是等于GEH的压的时候

保证每个节点的左右子树是位置不变的,就是左边的永远在左边,不能出现左边的压在了右边的里面这样的类似的情况。这个时候就能够发现

我们压缩右子树的时候I在J的右边所以压缩为IJ,之后在继续压缩为IJF这个时候以C为“根节点”的树在压缩就是CIJF。最后压缩得到的子树就是

中序遍历DBGEHACIJF

                                                                                           

                                                                                                

                                                                                   

二.前序遍历

                                                                     

前序遍历这里就要非常清楚一个前后顺序。在这里觉得左子树永远在右子树的前面。除了叶子节点的每个节点都要遵循这个顺序。

红线左边的节点都在红线右边的前面。前序遍历在这里我取了一个名字就叫做水流法。水流是从上到下冲刷我们的树的,在前面

的节点会先受到水流的冲刷.

                                                                    


如图所看到的水流是从左边来的,先受到冲击的就是ABD,用于水流是先冲击A的(水是自上而下的流动的)所以A先受到冲击,

接着就是B之后就是D。

随着水流的冲刷ABD节点就会冲垮。我们便把他们擦除。在前面的节点先受到冲刷,后面的节点后

受到冲刷,这个时候然后一一消失。

                                                                       

须要记住的一点就是左子树一定是在右子树的前面。所以之后不见的是EG(他们的根节点是A)之后依次消除H,CFIJ。

注意水是从上往下冲刷的。之后依次类推。

                                                                           

                                                                          

                                                                            

                                                                             

                                                                                

三.后序遍历

                                                                               

兴许遍历用的也是水流法对树进行遍历。这个时候水流是从后面来的,也就是树的右边。因为水流的特性我们也觉得

最上面的和最前面的最先受到伤害,最先被腐蚀,直到消失。

                                                                                  

所以最先消失的就是ACF。


                                                                                 


                                                                                    

                                                                                    

在这里因为右边的树在前面所以先消失的是G,D在最左边所以最后消失。这个时候树的节点消失的顺序就是ACFIJBEHGD,因为是兴许遍历所以我们要倒过来写:DGHEBJIFCA


至此,我们已经完毕了全部的前序遍历中序遍历和兴许遍历。