劍指offer 面試題23 從上往下列印二叉樹

2022-07-26 14:27:16 字數 1167 閱讀 6212

題目:從上往下列印出二叉樹的每個結點,同一層的結點按照從左到

右的順序列印。例如輸入圖4.5中

的二叉樹,則依次列印出8、6、10、5、7、9、11

二叉樹結點的定義如下:

1

struct

binarytreenode

2;

我們以如下二叉樹為例:

1

82 /\36

104 / \ /\55

7911

這道題實際上二叉樹層次遍歷方法:

解題步驟如下:

1.設定乙個deque雙端佇列,將根節點加入佇列

2.首先從隊頭取出根節點,輸出根節點的資料值。

同時將根節點的左右子結點加入佇列,此時佇列裡面的節點為 6、10

3.從隊頭取出節點6,同時加入節點6的左右節點到佇列尾,此時佇列節點10、5、7

4.從隊頭取出節點10,同時加入節點10的左右節點到對尾,此時佇列節點為5、7、9、11

5.此時取出隊頭節點5,節點5沒有左右子節點則輸出不必加佇列

5。重複直到佇列中元素全部取出後,層次遍歷便完成了。

**實現如下:

1 #include 2 #include 3

using

namespace

std;45

struct

binarytreenode6;

1112

13void createtree(binarytreenode**root)

1422

else

2329}30

3132

void preorder(binarytreenode*root)

3341

42void levelorder(binarytreenode*root)

4362

if(tempnode->m_pright!=null)

6366

} 67}

6869

intmain()

70

執行截圖:

劍指Offer之面試題23 從上往下列印二叉樹

所有 均通過g 編譯器 測試,僅為練手紀錄。面試題 23 從上往下列印二叉樹 題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。面試題23 從上往下列印二叉樹 題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。void treeprintbreadth...

《劍指offer》面試題23 從上往下列印二叉樹

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。思路 二叉樹的層次遍歷,借助乙個佇列實現。include include include using namespace std struct treenode class bintree treenode bintree createtree ...

《劍指Offer》面試題23 從上往下列印二叉樹

劍指offer 面試題23 從上往下列印二叉樹 二叉樹遍歷 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。按照層次遍歷的方法,使用佇列輔助。1.將根結點加入佇列。2.迴圈出隊,列印當前元素,若該結點有左子樹,則將其加入佇列,若有右子樹,將其加入佇列。3.直到隊列為空,表明已經列...