給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例:二叉樹:[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...