LeetCode 783. 二叉搜索树节点最小距离
783. 二叉搜索树节点最小距离
Difficulty:
示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:root = [1,0,48,null,null,12,49] 输出:1 提示: 树中节点数目在范围 [2, 100] 内 0 <= Node.val <= 105
给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
注意:本题与 530: 相同
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1
提示:
- 树中节点数目在范围
[2, 100]
内 0 <= Node.val <= 10<sup>5</sup>
Solution
一开始理解错了题目,以为是树中相邻的两个节点差值的最小值,其实题目要求的是任意两个节点差值的最小值,又因为给定的是二叉搜索树,那么意味着按照中序遍历后的二叉树是升序排列的,获得按照升序排列的二叉搜索树节点值之后,遍历节点值两两求节点值的差值,并取最小值即为结果。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def minDiffInBST(self, root: TreeNode) -> int:
if not root:
return None
stack, nums = [], []
while True:
while root:
stack.append(root)
root = root.left
if not stack:
break
node = stack.pop()
nums.append(node.val)
root = node.right
res = float('inf')
for i in range(1, len(nums)):
res = min(res, nums[i] - nums[i-1])
return res
相同题目: