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

2021-09-10 07:54:13 字數 1633 閱讀 3446

題目:平衡二叉樹

題目描述:

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹[3,9,20,null,null,15,7]

3

/ \9 20

/ \

15 7

返回true

分析:沒什麼可說的,雙遞迴,先判斷是否為空,再判斷節點是否平衡,節點平衡後,再判斷左節點和右節點,判斷平衡當然通過該節點的左右深度進行比較

上**:

/*** definition for a binary tree node.

* type treenode struct

*/func isbalanced(root *treenode) bool

if countfloor(root.left)-countfloor(root.right)>1 || countfloor(root.left)-countfloor(root.right) < -1elseelse

}return true

}func countfloor(root *treenode) int

max:=0

a:=countfloor(root.left)

b:=countfloor(root.right)

if a>belse

return 1+max

}題目:二叉樹的最小深度

題目描述:

給定乙個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

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

示例:

給定二叉樹[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回它的最小深度  2.

分析:也許有人會疑問,這很簡單啊,沒錯一開始我也覺得,馬上三行**解決,結果出現了錯誤

19 / 41個通過測試用例

狀態: 解答錯誤

輸入:[1,2]

輸出:1

預期:2

???為什麼輸出2呢,再看題目發現有乙個小玄機:最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。注意必須是葉子節點,所以這下就必須判斷下當前節點的狀態了;

不多說,上**自行感受:

/*** definition for a binary tree node.

* type treenode struct

*/func mindepth(root *treenode) int

min:=0

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

}else if root.left!=nilelse if root.right!=nilelse

return min

}

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

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

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

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

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

題目表述 給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1返回 true,因為存在目標和為 22 的根節點到葉子節點的路...