2020 9 6 每日一題 二叉樹的層次遍歷 II

2021-10-24 09:09:51 字數 1293 閱讀 8908

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)

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

3   

/ \

9 20

/ \

15 7

返回其自底向上的層次遍歷為:

[ [15,7], [9,20], [3] ]

要麼廣度優先搜尋要麼treewalk,感覺treewwalk實現起來簡單一點:

class

solution

ans.

get(level)

.add

(node.val)

;treewalk

(node.left, ans, level +1)

;treewalk

(node.right, ans, level +1)

;}public list

>

levelorderbottom

(treenode root)

}

缺點可能是最後需要reverse一遍,以及在前進過程中需要記錄當前是第幾層。

也可以用深度或者廣度優先。深度優先搜尋實現起來的感覺應該跟treewalk差不多,不實現了,實現了一下廣度優先搜尋,仍然採用記錄當前層級最後反轉的思路:

class

solution

ans.

get(level)

.add

(node.val)

; nodequeue.

add(node.left)

; nodequeue.

add(node.right)

; levelqueue.

add(level +1)

; levelqueue.

add(level +1)

;}collections.

reverse

(ans)

;return ans;

}}

看了一下題解,是可以逐層處理的,那樣就不需要記錄層級和最後反轉了:

class

solution

ans.

add(

0, cur);}

return ans;

}}

優秀啊題解

每日一題 重建二叉樹

題目 輸入某二叉樹的先序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的先序遍歷和中序遍歷的結果中都不含重複的數字。例如 前序遍歷序列 1,2,4,7,3,5,6,8 和中序遍歷序列 4,7,2,1,5,3,8,6 重建出下圖所示的二叉樹並輸出它的頭結點。param preorder 先序遍歷 p...

每日一題 平衡二叉樹

題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1 示例1 輸入 root 3,9,20,null,null,15,7 輸出 true 示例2 輸入 root 1,2,2,3,3,null,null,...

每日一題 34 二叉樹的層平均值

給定乙個非空二叉樹,返回乙個由每層節點平均值組成的陣列.示例 1 輸入 3 9 20 15 7 輸出 3,14.5,11 解釋 第0層的平均值是 3,第1層是 14.5,第2層是 11.因此返回 3,14.5,11 注意 節點值的範圍在32位有符號整數範圍內。解答 definition for a ...