怎么根據(jù)序列畫二叉樹 先序遍歷與后序遍歷?
先序遍歷與后序遍歷?前序遍歷:首先訪問(wèn)根節(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。在遍歷左、右子樹時(shí),我們還是先訪問(wèn)根節(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。后序遍歷:首先遍歷左子樹,然后遍歷右子樹,最后訪
先序遍歷與后序遍歷?
前序遍歷:首先訪問(wèn)根節(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。在遍歷左、右子樹時(shí),我們還是先訪問(wèn)根節(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。
后序遍歷:首先遍歷左子樹,然后遍歷右子樹,最后訪問(wèn)根節(jié)點(diǎn)。遍歷左、右子樹時(shí),仍先遍歷左子樹,再遍歷右子樹,最后遍歷根節(jié)點(diǎn)。
用棧來(lái)先序遍歷的算法思路?
采用鄰接表存儲(chǔ)的圖的深度優(yōu)先遍歷算法類似于二叉樹的先序遍歷,為什么是先序呢?
這是因?yàn)閳D的深度優(yōu)先遍歷算法首先訪問(wèn)節(jié)點(diǎn),然后訪問(wèn)其相鄰點(diǎn)。它類似于二叉樹的順序遍歷,首先訪問(wèn)子樹的根節(jié)點(diǎn),然后訪問(wèn)子樹的子節(jié)點(diǎn)(鄰接點(diǎn))。圖的廣度優(yōu)先遍歷算法類似于二叉樹的層次遍歷。
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
首先要明確前序、中序、后序的遍歷順序:前序:父節(jié)點(diǎn)、左子節(jié)點(diǎn)、右子節(jié)點(diǎn);中序:左子節(jié)點(diǎn)、父節(jié)點(diǎn)、右子節(jié)點(diǎn);后序:左子節(jié)點(diǎn)、右子節(jié)點(diǎn)、父節(jié)點(diǎn);首先根據(jù)前序遍歷,確定整個(gè)二叉樹的根節(jié)點(diǎn)(前序的第一個(gè)節(jié)點(diǎn)),然后通過(guò)中間序遍歷,將整個(gè)二叉樹按根節(jié)點(diǎn)直接劃分為兩個(gè)子樹。
此時(shí),按照預(yù)序和中間序一步一步地繪制整個(gè)二叉樹并不困難。然后我們可以編寫后序遍歷序列。例如:已知二叉樹的前序遍歷序列為bc D E F H,中序遍歷序列為bd C E a H F,寫后序遍歷序列。根據(jù)前序,樹的根節(jié)點(diǎn)是a;根據(jù)中間序和根節(jié)點(diǎn),B、D、C、E在根節(jié)點(diǎn)的左子樹上,h、F在根節(jié)點(diǎn)的右子樹上;通過(guò)逐級(jí)分析每個(gè)子樹,樹是a/B F/C h/D E,后序是decbhfa