// 題目:從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。
【**】
#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...