面試題32 從上往下列印二叉樹

2021-10-08 13:48:05 字數 1804 閱讀 5085

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

【**】

#include

//#include

#include

#include

//#include

#include

using

namespace std;

struct binarytreenode

;void

printfromtoptobottom

(binarytreenode*root)

queue> que;

que.

push

(root)

;while

(!que.

empty()

)if(tmp-

>rigth)}}

intmain()

/****

***/

題目:從上到下按層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印到一行。

【**】

#include

//#include

#include

#include

//#include

#include

using

namespace std;

struct binarytreenode

;void

printfromtoptobottom

(binarytreenode*root)

queue> que;

que.

push

(root)

;int next_level =0;

int to_be_printed =1;

while

(!que.

empty()

)if(tmp-

>rigth)

if(to_be_printed==0)

}}intmain()

/****

***/

題目:請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順 序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。

【**】

#include

//#include

#include

#include

//#include

#include

using

namespace std;

struct binarytreenode

;void

printfromtoptobottom

(binarytreenode*root)

stack> levels[2]

;int current =0;

int next =1;

//奇數層

levels[current]

.push

(root)

;while

(!levels[current]

.empty()

||!levels[next]

.empty()

)if(tmp-

>rigth)

}else

if(tmp-

>left)}if

(levels[current]

.empty()

)}}int

main()

/****

***/

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

不管是廣度優先遍歷乙個有向圖還是一棵樹,都要用到佇列,第一步把起始結點 對樹而言是根結點 放入到佇列中,接下來每一次從佇列頭部提取出乙個結點,遍歷這個結點之後把從它能到達的結點 對樹而言是子結點 都依次放入到佇列,我們重複這個遍歷過程,直到佇列中的結點全部被遍歷為止 從上往下列印出二叉樹的每個結點,...

面試題27 從上往下列印二叉樹

題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左往右的順序列印。邊界條件 root為空 思路 這其實是廣度優先演算法,要用到佇列。首先將root結點入佇列。當佇列不為空時,下面一直迴圈。取佇列front的乙個結點,輸出其value,出佇列。將上一步取出的結點左結點入佇列,然後右結點入佇列。...

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

題目 從上往下列印二叉樹的每個節點,同一行的節點按照從左到右列印。示例 標頭檔案 binarytree.h pragma once includestruct binarytreenode binarytreenode createbinarytreenode int value void conn...