學習記錄 LeetCode探索二叉樹 路徑總和

2021-10-05 08:07:15 字數 669 閱讀 8309

leetcode傳送門:112. 路徑總和

本題要判斷二叉樹中是否存在從根結點到葉子的路徑中結點值相加等於所給值,很容易想到應該使用深度優先搜尋,分別對每一條路徑進行判斷。

這裡提供一種思路:

先判斷左子樹是否非空,若非空,遞迴呼叫該函式,同時總和sum減掉該左子樹的父結點的值

再判斷右子樹是否非空,若非空,遞迴呼叫該函式,同時總和sum減掉該右子樹的父結點的值

若遞迴到某個葉子結點時(判斷是否為葉子結點的條件為左右子樹均為空)總和sum恰好減到了0,則該葉子結點到根結點的路徑中各結點權值之和即為sum,返回true

若遍歷完二叉樹後仍沒有找到這樣的路徑,返回false

/**

* definition for a binary tree node.

* struct treenode ;

*//*sum_num是本輪遞迴的總和*/

bool path(struct treenode* p, int sum_num)

/*sum是給定總和*/

LeetCode學習記錄(4 6)

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...

LeetCode學習記錄(10)

給定乙個字串 s 和乙個字元模式 實現支援 和 的正規表示式匹配。匹配任意單個字元。匹配零個或多個前面的元素。匹配應該覆蓋整個字串 s 而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a 輸...

leetcode解題記錄(二)

問題描述 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 思路 首先找出陣列中長度最短的字串...