動機

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