二叉搜索树的最小绝对差
程序员文章站
2022-01-15 11:57:40
目录一、题目内容二、解题思路三、代码一、题目内容给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。提示:树中至少有 2 个节点。本题与 783 https://leetcode-cn.com/problems/minimum-distance-betwe......
目录
一、题目内容
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例:
输入:
1
\
3
/
2输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
提示:
树中至少有 2 个节点。
本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同
二、解题思路
中序遍历BST得到递增序列,考虑相邻二值之差即可。
三、代码
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def getMinimumDifference(self, root: TreeNode) -> int:
inorder_list = []
def dfs(root):
if not root:
return
dfs(root.left)
inorder_list.append(root.val)
dfs(root.right)
dfs(root)
return min(inorder_list[i + 1] - inorder_list[i] for i in range(len(inorder_list) - 1))
if __name__ == '__main__':
a = TreeNode(1)
a.right = TreeNode(3)
a.right.left = TreeNode(2)
s = Solution()
ans = s.getMinimumDifference(a)
print(ans)
本文地址:https://blog.csdn.net/qq_36556893/article/details/109025860
上一篇: 消息队列之 Kafka
下一篇: spring事务异常回滚使用注意点