原创 437. 路徑總和 III(Path Sum III)
給定一個二叉樹,它的每個結點都存放着一個整數值。 找出路徑和等於給定數值的路徑總數。 路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。 二叉樹不超過1000個節點,且節點數值範圍是 [-1
原创 113. 路徑總和 II(sum path ii)
給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定如下二叉樹,以及目標和 sum = 22, 5
原创 111. 二叉樹的最小深度
給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9
原创 101. 對稱二叉樹(Symmetric Tree)
給定一個二叉樹,檢查它是否是鏡像對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3]
原创 100. 相同的樹(Same Tree)
給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同,並且節點具有相同的值,則認爲它們是相同的。 示例 1: 輸入: 1 1 / \ / \
原创 226. 翻轉二叉樹(Invert Binary Tree)
翻轉一棵二叉樹。 示例: 輸入: 4 / \ 2 7 / \ / \ 1 3 6 9 輸出: 4 / \ 7 2 / \ / \ 9 6 3 1
原创 199. 二叉樹的右視圖(註釋詳解)( Binary Tree Right Side View)
給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。 示例: 輸入: [1,2,3,null,5,null,4] 輸出: [1, 3, 4] 解釋: 1 <--- /
原创 103. 二叉樹的鋸齒形層次遍歷
給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20
原创 347. 前 K 個高頻元素(註釋詳解)(Top K Frequent Elements)
給定一個非空的整數數組,返回其中出現頻率前 k 高的元素。 示例 1: 輸入: nums = [1,1,1,2,2,3], k = 2 輸出: [1,2] 示例 2: 輸入: nums = [1], k = 1 輸出: [1] 方法一、
原创 71. 簡化路徑
以 Unix 風格給出一個文件的絕對路徑,你需要簡化它。或者換句話說,將其轉換爲規範路徑。 在 Unix 風格的文件系統中,一個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路
原创 144. 二叉樹的前序遍歷
給定一個二叉樹,返回它的 前序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,2,3] /** * Definition for a binary t
原创 102. 二叉樹的層次遍歷
給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回
原创 94. 二叉樹的中序遍歷
給定一個二叉樹,返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2] 遞歸算法 /** * Definition for a binary
原创 150. 逆波蘭表達式求值
根據逆波蘭表示法,求表達式的值。 有效的運算符包括 +, -, *, / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。 說明: 整數除法只保留整數部分。 給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數爲
原创 145. 二叉樹的後序遍歷
給定一個二叉樹,返回它的 後序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [3,2,1] 遞歸做法 /** * Definition for a bina