首頁>技術>

題目

給你一棵根為 root 的二叉樹,請你返回二叉樹中好節點的數目。

「好節點」X 定義為:從根到該節點 X 所經過的節點中,沒有任何節點的值大於 X 的值。

示例 1:輸入:root = [3,1,4,3,null,1,5] 輸出:4

解釋:圖中藍色節點為好節點。

根節點 (3) 永遠是個好節點。

節點 4 -> (3,4) 是路徑中的最大值。

節點 5 -> (3,4,5) 是路徑中的最大值。

節點 3 -> (3,1,3) 是路徑中的最大值。

示例 2:輸入:root = [3,3,null,4,2] 輸出:3

解釋:節點 2 -> (3, 3, 2) 不是好節點,因為 "3" 比它大。

示例 3:輸入:root = [1] 輸出:1

解釋:根節點是好節點。

提示:二叉樹中節點數目範圍是 [1, 10^5] 。

每個節點權值的範圍是 [-10^4, 10^4] 。

解題思路分析

1、遞迴;時間複雜度O(n),空間複雜度O(log(n))

func goodNodes(root *TreeNode) int {	maxValue := math.MinInt32	return dfs(root, maxValue)}func dfs(root *TreeNode, maxValue int) int {	if root == nil {		return 0	}	if root.Val >= maxValue {		return dfs(root.Left, root.Val) + dfs(root.Right, root.Val) + 1	}	return dfs(root.Left, maxValue) + dfs(root.Right, maxValue)}
總結

Medium題目,二叉樹採用常規遞迴方法解題

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • MySQL資料庫入門(一)