從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。
例如:給定二叉樹: [3,9,20,null,null,15,7],
返回其層次遍歷結果:
[3],bfs解決這題和上一題439,劍指 offer-從上到下列印二叉樹其實是一樣的,只不過上一題返回的是陣列,這一題返回的是list。返回陣列,我們還要初始化陣列,但不知道陣列的大小,所以一般是先儲存在list中再轉化為陣列,返回list就比較簡單了。[9,20],
[15,7]
//把每層的結點值儲存在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 從上到下列印二叉樹
普通的列印二叉樹很簡單,使用佇列就可以解決。但是我做的這個題目是要將每一層的節點都存起來,而且不同層之間是分開儲存的。其中有個問題就是我們如何去判斷某一層是遍歷完了,然後要到下一層了呢。我們可以這樣解決,記住每層的個數,這樣遍歷上一層時我們知道上一層個數了就不會遍歷下一層的節點 而遍歷過程中也要把子...