力扣No 102 二叉樹的層次遍歷

2022-07-12 00:45:14 字數 734 閱讀 9759

給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。

示例:二叉樹:[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回其層次遍歷結果:

[

[3],

[9,20],

[15,7]

]

這道題有兩種解法:遞迴和遍歷

遞迴可以用level和list去存每層的節點,如果這層節點沒有相應的list去存,就新建乙個list,然後將當前節點存入。如果不為空,則取出當前層數的list,將新節點存入。

list> levels = new arraylist<>();

public list>levelorder(treenode root)

dfs(root, 0);

return

levels;

}public

void dfs(treenode root, int

level)

//存入節點

levels.get(level).add(root.val);

//如果左右子樹不為空就存入

if (root.left != null

)

if (root.right != null

)

力扣 二叉樹的層次遍歷

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其自底向上的層次遍歷為 15,7 9,20 3 definition for a binary tree n...

LeetCode 力扣 102 二叉樹的層次遍歷

二叉樹的層次遍歷,輸出乙個 list 的 list。這道題考的就是 bfs,我們可以通過 dfs 實現。只需要在遞迴過程中將當前 level 傳入即可。public list levelorder treenode root private void dfs treenode root,int le...

102 二叉樹的層次遍歷

難度 中等 題目描述 思路總結 看到這題,不知是受到什麼毒害,首先想到了佇列和棧,但發現得用兩個分別存當前和子節點,遂放棄,看官方題解,還是兩種方法,遞迴和迭代。題解一 遞迴 definition for a binary tree node.class treenode def init self...