Leetcode之樹(簡單難度篇)

2021-10-06 09:34:17 字數 975 閱讀 8475

1.相同的樹:遞迴法、迭代法(時間複雜度均為o(n),空間複雜度在最好、最差的情況下分別為o(log n),o(n))

2.對稱二叉樹:遞迴法、迭代法都與第一題類似,將本題看作自己和自己的映象進行比較,看看是否是相同的樹,也就是遷移到第一題的解法中去。

3.二叉樹的最大深度:遞迴法、迭代法

注:<1>. 特別注意depth變數更新的時機與具體數值,取得是depth和當前最大深度值的較大者。<2>.關於廣度優先遍歷的解法還有一種形式。當前解法在將當前結點的左右孩子加入佇列時,並沒有進行非null的判斷,即使為null,下一層迴圈輪到它時就直接出佇列即可,不做任何操作。另一種形式的解法是在加入結點的左右孩子時加上非null判斷,這樣一來就和二叉樹的層序遍歷(不會出現null)相似,只不過在遍歷每一層時需要讓depth+1。

4.二叉樹的層次遍歷:迭代法、遞迴法。本題目的遞迴解法沒有看懂,這裡省略。

5.將有序陣列轉換為二叉搜尋樹

思路:

6.平衡二叉樹:自頂向下遞迴、自底向上遞迴(最佳)

7.二叉樹的最小深度:遞迴法

8.路徑總和:遞迴法、迭代法

9.翻轉二叉樹:遞迴法、迭代法的經典題目

10.二叉搜尋樹的最近公共祖先:遞迴法、迭代法(最佳)

11.二叉樹的所有路徑:遞迴法、迭代法。本題目難度較之前會大一些。

(1)在判斷相同的樹、以及平衡二叉樹的遞迴方法時,返回值都有一種通用的寫法,例如return p.val == q.val && issametree(p.right, q.right) && issametree(p.left, q.left)。因為只要左右子樹不成立就相當於根節點不成立,所以三個條件可以用&&連到一起寫。當然了,將p.val==q.val在return之前單獨拎出來判斷也可以。

(2)無論是bfs和dfs在求最大(小)深度時,都只需要在碰到葉子結點時更新變數值。而不用碰到乙個非空的結點就更新。另外,向棧或佇列裡新增當前結點的左右孩子時,要先進行非空判斷。

LeetCode簡單難度題解 二

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。題解 迴圈陣列 從後往前找,當匹配到第乙個比目標值小的那個元素下標的時候 返回下標 1就是目標值要插入的位置,如果有正好匹配的值 直接返回下標 publ...

(LeetCode 陣列 難度簡單 1295題

給你乙個整數陣列 nums,請你返回其中位數為 偶數 的數字的個數。示例 1 輸入 nums 12,345,2,6,7896 輸出 2 解釋 12 是 2 位數字 位數為偶數 345 是 3 位數字 位數為奇數 2 是 1 位數字 位數為奇數 6 是 1 位數字 位數為奇數 7896 是 4 位數字...

(LeetCode 陣列 難度簡單 1266題

平面上有 n 個點,點的位置用整數座標表示 points i xi,yi 請你計算訪問所有這些點需要的最小時間 以秒為單位 你可以按照下面的規則在平面上移動 每一秒沿水平或者豎直方向移動乙個單位長度,或者跨過對角線 可以看作在一秒內向水平和豎直方向各移動乙個單位長度 必須按照陣列 現的順序來訪問這些...