現(xiàn)在有一顆二叉樹(shù)
我們將每個(gè)節(jié)點(diǎn)看做一個(gè)根節(jié)點(diǎn),并對(duì)其進(jìn)行前序遍歷,可以得到
ABC ? ? ? BDE ? ? ?D ? ? ? E ? ? ?CF ? ? F
可以發(fā)現(xiàn),每個(gè)節(jié)點(diǎn)都出現(xiàn)了兩次,可以認(rèn)為是相鄰節(jié)點(diǎn),我們按照順序進(jìn)行組合,比如ABC和BDE,因?yàn)镈E是以B為根節(jié)點(diǎn)遍歷出來(lái)的,所以?xún)?yōu)先和B組合,就可以得到ABDEC,將只有一個(gè)節(jié)點(diǎn)的排除,那么我們得到ABDECF這就是前序遍歷。
如果我們對(duì)其進(jìn)行中序遍歷,可以得到
BAC ? ? DBE ? ? ?D ? ? ?E ? ? ?CF ? ? F
同樣的組合,可以得到DBEACF。
其實(shí)這個(gè)規(guī)律,是參考局部的排序能夠保證整體的排序方式,所以我們需要對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行相應(yīng)的遍歷操作(進(jìn)行入棧),當(dāng)?shù)诙斡龅皆摴?jié)點(diǎn),就可以入隊(duì)列了。