原创 平面列表-LintCode

描述: 給定一個列表,該列表中的每個要素要麼是個列表,要麼是整數。將其變成一個只包含整數的簡單列表。  注意事項 如果給定的列表中的要素本身也是一個列表,那麼它也可以包含列表。 樣例: 給定 [1,2,[1,2]],返回

原创 把排序數組轉換爲高度最小的二叉搜索樹-LintCode

描述: 給一個排序數組(從小到大),將其轉換爲一棵高度最小的排序二叉樹。  注意事項 There may exist multiple valid solutions, return any of them. 樣例:

原创 合併區間-LintCode

描述: 給出若干閉合區間,合併所有重疊的部分。 樣例: 給出的區間列表 => 合併後的區間列表: [ [ [1, 3], [1, 6], [2, 6],

原创 二叉樹的最大深度-LintCode

描述: 給定一個二叉樹,找出其最大深度。 二叉樹的深度爲根節點到最遠葉子節點的距離。 樣例: 給出一棵如下的二叉樹: 1 / \ 2 3 / \ 4 5 這個二叉樹的最大深度爲3. 思路: 這個題就

原创 二叉樹的最小深度-LintCode

描述: 給定一個二叉樹,找出其最小深度。 二叉樹的最小深度爲根節點到最近葉子節點的距離。 樣例: 給出一棵如下的二叉樹:         1      /     \     2       3           /    

原创 翻轉二叉樹-LintCode

描述: 翻轉一棵二叉樹 樣例: 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 思路: 這個題就是遞歸調用 swap( ,

原创 排序列表轉換爲二分查找樹-LintCode

描述: 給出一個所有元素以升序排序的單鏈表,將它轉換成一棵高度平衡的二分查找樹 樣例: 2 1->2->3 => / \ 1 3 思路: 折半取鏈表中的元素作爲其根節點

原创 克隆二叉樹-LintCode

描述: 深度複製一個二叉樹。 給定一個二叉樹,返回一個他的 克隆品 。 樣例: 給定一個二叉樹: 1 / \ 2 3 / \ 4 5 返回其相同結構相同數值的克隆二叉樹:

原创 二叉樹的所有路徑-LintCode

描述: 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。 樣例: 給出下面這棵二叉樹: 1 / \ 2 3 \ 5 所有根到葉子的路徑爲: [ "1->2->5", "1->3" ] 思路

原创 二叉樹中的最大路徑和-LintCode

描述: 給出一棵二叉樹,尋找一條路徑使其路徑和最大,路徑可以在任一節點中開始和結束(路徑和爲兩個節點之間所在路徑上的節點權值之和) 樣例: 給出一棵二叉樹: 1 / \ 2 3 返回 6 思

原创 Convert BST to Greater Tree-LintCode

描述: Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed

原创 子樹-LintCode

描述: 有兩個不同大小的二進制樹: T1 有上百萬的節點; T2 有好幾百的節點。請設計一種算法,判定 T2 是否爲 T1的子樹。  注意事項 若 T1 中存在從節點 n 開始的子樹與 T2 相同,我們稱 T2 是 T1 的子樹

原创 兩組數的交-LintCode

描述: 返回兩個數組的交  注意事項 Each element in the result must be unique.The result can be in any order. 樣例: nums1 = [1, 2,

原创 平衡二叉樹-LintCode

描述: 給定一個二叉樹,確定它是高度平衡的。對於這個問題,一棵高度平衡的二叉樹的定義是:一棵二叉樹中每個節點的兩個子樹的深度相差不會超過1。  樣例: 給出二叉樹 A={3,9,20,#,#,15,7}, B={3,#,20,15,

原创 全排列-LintCode

描述: 給定一個數字列表,返回其所有可能的排列。  注意事項 你可以假設沒有重複數字。 樣例: 給出一個列表[1,2,3],其全排列爲: [ [1,2,3], [1,3,2], [2,1,3], [2,3