难度简单112
给定一个二叉搜索树的根节点 root
,返回树中任意两节点的差的最小值。
示例:
输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树节点对象(TreeNode object),而不是数组。 给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \ 2 6 / \ 1 3 最小的差值是 1, 它是节点1和节点2的差值, 也是节点3和节点2的差值。
注意:
- 二叉树的大小范围在
2
到100
。 - 二叉树总是有效的,每个节点的值都是整数,且不重复。
- 本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同
二叉搜索树的中序遍历是升序数组,固用中序遍历即可:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
res = 999
pre = -999
def minDiffInBST(self, root):
"""
:type root: TreeNode
:rtype: int
"""
self.in_order(root)
return self.res
def in_order(self, root):
if root is None:
return
self.in_order(root.left)
self.res = min(self.res, root.val-self.pre)
self.pre = root.val
self.in_order(root.right)