前序遍历:先输出父节点 再遍历左子树和右子树
中序遍历:先遍历左子树 在输出父节点 最后遍历右子树
后序遍历:先遍历左子树 再遍历右子树 最后输出父节点
层序遍历:按照层级逐层遍历
思想:
不管是那种遍历,都是从根节点(A)出发!这很重要。前序也好,中序也好,把他们看成是一个任务,如果任务中执行到某个位置,发现这个字母竟然他下面是个树,此时就先别遍历他,而是先把包含这个字母在内的树,看成一个整体,再看一眼我要执行的任务,下次若还发现是树的元素还是这样操作。
前序遍历:
从A(父)出发,本应该然后是B,我发现B竟然下面是个树,就先不遍历他,我把下面的树看成一个整体,然后接着前序遍历,从B(父)出发,到了D,同理,直到我遍历到了F,然后遍历F的右,本应该是G,但是G下面有个树,对这个树继续前序遍历,然后G(父)、H(左)、I(右)。D的子树执行完了,到了D的右(E),B的子树也执行完了,到了C(右)。
中序遍历:
从A出发(因为A是父没有取),理应是取B,但是B有子树,往下到D,把包含D在内的树看成一个整体,先取到F(D子树中的左),然后取D子树中的D(父),然后理应再取D子树中右G,但是G有子树,故先取G子树中的左(H)、父(G)、右(I)。到这D的子树取完了,再把目光放到包含B在内的B的子树,该取D的父(B)然后取E(右)。到这B的子树取完了,该取父(A),然后C(右)
后序遍历:
从A出发(因为A是父没有取),理应是取B,但是B有子树,往下到D,先取到F(D子树中的左),然后理应取D子树中的G,但是G有子树,在G的子树中取H(左)、再取I(右)、G(父)。G子树取完了,然后在D的子树中,该取D(父)。D的子树取完了,在B的子树中,该取E(右),然后取B(父)。B的子树取完了,然后取C(右),然后取A(父)
层序遍历:
每一层从左到右,一层往下...