|
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 本題為查詢樹的深度,我們采用直接遍歷二叉樹,并記錄我們訪問深度的方法即可。 可以考慮用一個全局變量記錄我們的深度,也可以通過DFS函數(shù)每一次返回當(dāng)前子樹的深度。 若采用返回值,則有
點(diǎn)擊(此處)折疊或打開
受后續(xù)遍歷二叉樹思想的啟發(fā),想到可以利用后續(xù)遍歷的方法來求二叉樹的深度,在每一次輸出的地方替換成算棧S的大小,遍歷結(jié)束后最大的棧S長度即是棧的深度。 算法的執(zhí)行步驟如下: (1)當(dāng)樹非空時,將指針p指向根節(jié)點(diǎn),p為當(dāng)前節(jié)點(diǎn)指針。 (2)將p壓入棧S中,0壓入棧tag中,并令p執(zhí)行其左孩子。 (3)重復(fù)步驟(2),直到p為空。 (4)如果tag棧中的棧頂元素為1,跳至步驟(6)。從右子樹返回 (5)如果tag棧中的棧頂元素為0,跳至步驟(7)。從左子樹返回 (6)比較treedeep與棧的深度,取較大的賦給treedeep,對棧S和棧tag出棧操作,p指向NULL,并跳至步驟(8)。 (7)將p指向棧S棧頂元素的右孩子,彈出棧tag,并把1壓入棧tag。(另外一種方法,直接修改棧tag棧頂?shù)闹禐?也可以) (8)循環(huán)(2)~(7),直到棧為空并且p為空 (9)返回treedeep,結(jié)束遍歷 點(diǎn)擊(此處)折疊或打開
http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html |
|
|
來自: 雪柳花明 > 《LeetCode》