440,劍指 Offer 從上到下列印二叉樹 II

2021-10-09 11:56:05 字數 1332 閱讀 4998

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

例如:給定二叉樹: [3,9,20,null,null,15,7],

返回其層次遍歷結果:

[3],

[9,20],

[15,7]

bfs解決這題和上一題439,劍指 offer-從上到下列印二叉樹其實是一樣的,只不過上一題返回的是陣列,這一題返回的是list。返回陣列,我們還要初始化陣列,但不知道陣列的大小,所以一般是先儲存在list中再轉化為陣列,返回list就比較簡單了。

//把每層的結點值儲存在res中,

res.

add(sublist);}

return res;

}dfs解決這題讓一層一層的列印,其實就是bfs,但使用dfs也是可以解決的,看一下

public list

>

levelorder

(treenode root)

public

void

levelhelper

(list

> list, treenode root,

int level)

//level表示的是第幾層,這裡訪問到第幾層,我們就把資料加入到第幾層

list.

get(level)

.add

(root.val)

;//當前節點訪問完之後,再使用遞迴的方式分別訪問當前節點的左右子節點

levelhelper

(list, root.left, level +1)

;levelhelper

(list, root.right, level +1)

;}

總結這題其實就是二叉樹的寬度優先搜尋,前面講373,資料結構-6,樹的時候也提到過樹的各種遍歷方式。

Python劍指offer 分行從上到下列印二叉樹

從上到下按層列印二叉樹,同一層的節點按照從左到右 的順序列印,每一層列印到第一行,例如本題中上乙個問題的二叉樹 輸出形式會是 86 10 5 7 9 11 這道題和前面一道題十分類似,也可以用乙個佇列來儲存要列印的節點。為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數 乙個變數表示當前層中還沒...

劍指Offer 從上到下列印二叉樹

2.題目 2 3.題目 3 不分行從上到下列印二叉樹。從上到下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。輸入 8 6 10 57 911輸出 8610 57911這個其實就是層序遍歷。每次列印乙個結點的時候,若該結點有子結點,則讓該結點的子結點放到乙個佇列的末尾。接下來到佇列的首部...

劍指offer 從上到下列印二叉樹

普通的列印二叉樹很簡單,使用佇列就可以解決。但是我做的這個題目是要將每一層的節點都存起來,而且不同層之間是分開儲存的。其中有個問題就是我們如何去判斷某一層是遍歷完了,然後要到下一層了呢。我們可以這樣解決,記住每層的個數,這樣遍歷上一層時我們知道上一層個數了就不會遍歷下一層的節點 而遍歷過程中也要把子...