原创 子樹

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

原创 翻轉鏈表

問題描述: 翻轉一個鏈表 樣例 給出一個鏈表1->2->3->null,這個翻轉後的鏈表爲3->2->1->null 解題思路: 新建一個鏈表,經過賦值進行交換。 代碼: /**  * Definition of ListNode

原创 平衡二叉樹

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

原创 二叉樹的最大節點

問題描述: 在二叉樹中尋找值最大的節點並返回。 樣例 給出如下一棵二叉樹: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值爲 3 的節點。 解決思路: 創建一個新的節點,

原创 等價二叉樹

問題描述: 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。 樣例 1 1 / \ / \ 2 2 a

原创 翻轉二叉樹

問題描述: 翻轉一棵二叉樹 樣例   1         1  / \       / \ 2   3  => 3   2    /       \   4         4 解題思路: 運用遞歸方式,將二叉樹的左、右子樹交換 代碼:

原创 二叉樹的路徑和

問題描述: 給定一個二叉樹,找出所有路徑中各節點相加總和等於給定 目標值 的路徑。 一個有效的路徑,指的是從根節點到葉節點的路徑。 解題思路: 對每條路徑進行加和,與給定的值比較,若相等,加到向量中。 代碼: /**  * Defi

原创 二叉樹的最小深度

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

原创 二叉樹的層次遍歷

問題描述: 給出一棵二叉樹,返回其節點值的層次遍歷(逐層從左往右訪問) 樣例 給一棵二叉樹 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分層遍歷結果: [ [3],

原创 克隆二叉樹

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

原创 將二叉樹拆成鏈表

問題描述: 將一棵二叉樹按照前序遍歷拆解成爲一個假鏈表。所謂的假鏈表是說,用二叉樹的 right 指針,來表示鏈表中的 next 指針。  注意事項 不要忘記將左兒子標記爲 null,否則你可能會得到空間溢出或是時間溢出 樣例 1    

原创 整數排序

題目描述: 給一組整數,按照升序排序,使用選擇排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。 樣例 對於數組 [3, 2, 1, 4, 5], 排序後爲:[1, 2, 3, 4, 5]。 解題思路: 對向量中的元素進

原创 Convert BST to Greater Tree

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

原创 二叉樹的最大深度

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

原创 算法總結

算法分析與設計總結 經過八個周的時間,算法分析與設計這門課程結束,感覺自己對寫程序的方法有了新的認識,下面對這門課程所學到的知識和自己的感受做一個總結。 在算法分析與設計這門課中,主要學習了遞歸策略、分治策略、動態規劃、貪心算法、回溯算法