每日程式設計(十二) leetcode刷題

2021-09-10 15:01:01 字數 1387 閱讀 2860

題目表述:給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。

說明: 葉子節點是指沒有子節點的節點。

示例:給定如下二叉樹,以及目標和 sum = 22,

5

/ \4 8

/ / \

11 13 4

/ \ \

7 2 1

返回 true, 因為存在目標和為 22 的根節點到葉子節點的路徑 5->4->11->2。

分析:很明顯大致就是求二叉樹深度的型別,就是遞迴,很明顯遞迴到葉子節點判斷是否相等,話不多說上**

**:

/**

* definition for a binary tree node.

* type treenode struct

*/func haspathsum(root *treenode, sum int) bool

if root.left == nil && root.right==nilelse

}return haspathsum(root.left,sum-root.val) || haspathsum(root.right,sum-root.val)

}

題目描述:給定乙個二叉樹,它的每個結點都存放乙個 0-9 的數字,每條從根到葉子節點的路徑都代表乙個數字。

例如,從根到葉子節點路徑 1->2->3 代表數字 123。

計算從根到葉子節點生成的所有數字之和。

說明: 葉子節點是指沒有子節點的節點。

示例 1:

輸入: [1,2,3]1/

2 3輸出: 25

解釋:從根到葉子節點路徑 1->2 代表數字 12.

從根到葉子節點路徑 1->3 代表數字 13.

因此,數字總和 = 12 + 13 = 25.

分析:其實跟上面那道題有類似的地方,只是不一樣的是,需要遞迴到每個葉子節點,並且返回值要相加,總之還是遞迴

**:

/**

* definition for a binary tree node.

* type treenode struct

*/func sumnumbers(root *treenode) int

func sum(root *treenode,p int) int

if root.left == nil && root.right==nil

parent :=(p+root.val)*10

sum :=sum(root.left,parent)+sum(root.right,parent)

return sum

}

每日程式設計(五) leetcode刷題

題目 最後乙個單詞的長度 描述 給定乙個僅包含大小寫字母和空格 的字串,返回其最後乙個單詞的長度。如果不存在最後乙個單詞,請返回 0 說明 乙個單詞是指由字母組成,但不包含任何空格的字串。示例 輸入 hello world 輸出 5分析 比較簡單了,很明顯字串的分割,去最後乙個字串,計算長度即可,但...

每日程式設計(十) leetcode刷題

題目 將有序陣列轉換為二叉搜尋樹 題目描述 將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示...

每日程式設計(十一) leetcode刷題

題目 平衡二叉樹 題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。分析 沒什麼可說的,雙遞迴,先...