設計非遞迴演算法,從一棵二叉樹中查詢出所有節點的最大值並返

2021-04-11 05:56:13 字數 497 閱讀 1387

1樓:匿名使用者

給個思路:

找最大值的關鍵是樹的遍歷,而遞迴的遍歷方式,就是利用函式調內用,引數的入棧出容

棧,來達到回溯的目的,同理,不用遞迴呼叫,我們也可以採用這個思想

建立乙個棧式的資料結構

將根節點指標壓入棧中,訪問其值,假如我們採用廣度優先的遍歷方式,就遍歷其子節點

在訪問子節點的同時,依次將訪問過的節點指標壓入棧中,而最上面的節點就是最後訪問的節點

如最上面的節點是葉子節點,則彈棧,否則繼續遍歷其子節點,並如3步所說,依訪問順序壓棧

對於所有子節點都已遍歷(壓棧)的父節點,做標記,則當彈棧後,棧的最上面是乙個帶有標記的非葉子節點,亦將其彈出棧

迴圈3-5步,直到棧空為止

深度優先搜尋,也可以用類似的方式實現

2樓:匿名使用者

直接for迴圈遍歷?二叉樹節點資訊是裝在陣列裡面的直接for遍歷陣列不就行了?當然如果不是陣列,直接遍歷類似的。

中序遞迴遍歷二叉樹的演算法?(資料結構)

include include define maxsize 100 typedef char elemtype typedef struct node bitnode j ch str j bitnode find bitnode b,elemtype x bitnode lchild bitno...

編寫演算法,判斷一顆二叉樹是否是完全二叉樹

可以檢驗一棵樹中有0個兒子,1個兒子,2個兒子的節點數a,b,c。則應滿足b 0,a c 1 include include define max 100 typedef struct node bitnode,bitree void createbitree bitree bt bool full...

設一棵二叉樹的中序遍歷序列為BDCA,後序遍歷序列為DBAC

這個先根據後序遍歷確定根節點為c。再根據中序遍歷得到根節點的右孩子為a。然後根據後序遍歷確定,b是根節點的左孩子,d是b的孩子。再根據中序遍歷,得到d是b的右孩子。根據這個畫出二叉樹。前序遍歷結果是 cbda。後序序列最後乙個為根節點,所以c為根節點,由中序遍歷和後序遍歷可以達到,二叉樹如下 由二叉...