動機
dfs回傳最大的子節點
Problem
Given the root
of a Binary Search Tree (BST), return the minimum absolute difference between the values of any two different nodes in the tree.
Example 1:
Input: root = [4,2,6,1,3]Output: 1
Example 2:
Input: root = [1,0,48,Leetcode,null,12,49]Output: 1
Constraints:
- The number of nodes in the tree is in the range
[2, 104]
. 0 <= Node.val <= 105
Note: This question is the same as 783: https://leetcode.com/problems/minimum-distance-between-bst-nodes/
sol
class Solution:
def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
ret = float('inf')
def dfs(r,prev):
nonlocal ret
if not r:
return prev
else:
a = dfs(r.left,prev)
ret = min(ret, abs(r.val-prev), abs(r.val-a))
b = dfs(r.right,r.val)
return b
dfs(root,float('inf'))
return ret