題目連結 | 671. 二叉樹中第二小的節點 |
---|---|
思路 | 樹的遍歷(DFS) |
題解連結 | 官方題解 |
關鍵點 | 利用樹的性質進行適當剪枝:1. 樹的根節點為全域性最小點 2. 父節點的值為該子樹的最小值 |
時間複雜度 | \(O(n)\) |
空間複雜度 | \(O(n)\) |
程式碼實現:
class Solution:
def findSecondMinimumValue(self, root: Optional[TreeNode]) -> int:
answer = -1
val = root.val
def dfs(node):
if node is None:
return
nonlocal answer
if answer != -1 and node.val >= answer:
return
if node.val > val:
answer = node.val
return
dfs(node.left)
dfs(node.right)
dfs(root)
return answer