题目LeetCode给定一棵非负值的二叉搜索树,求任意两个节点的值之间的最小绝对差。例:输入:1\3/2Output:1解释:最小绝对差为1,也就是2和1(或者2和3)的差。注意:这个BST至少有两个节点。这道题同783:https://leetcode.com/problems...Problem里德给你一个二叉搜索树,其中所有节点都是非负值。请计算树中任意两个节点之差的绝对值的最小值。示例:输入:1\3/2输出:1解释:最小绝对差为1,其中2和1之间的绝对差为1(或2和3)。提示:树中至少有2个节点。本题同783https://leetcode-cn.com/probl...DFS方法一:dfs遍历取节点值,然后计算最小绝对差方法二:dfs遍历直接比较绝对值Python3代码方法1#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defgetMinimumDifference(self,root:TreeNode)->int:#方案一:dfs遍历取节点值,然后计算最小绝对差defdfs(root):ifnotroot:return#中序遍历是递增的ifroot.left:dfs(root.左)tmp_val.append(root.val)ifroot.right:dfs(root.right)tmp_val=[]dfs(root)res=float("inf")foriinrange(len(tmp_val)-1):res=min(res,abs(tmp_val[i]-tmp_val[i+1]))returnresmethod2#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方法:defgetMinimumDifference(self,root:TreeNode)->int:#解决方法二:dfs遍历直接比较绝对值pre=-1res=float("inf")defdfs(root):nonlocalpre,resifnotroot:return#中序遍历是递增的ifroot.left:dfs(root.left)ifpre!=-1:res=min(res,abs(pre-root.val))pre=root.valifroot.右:dfs(root.right)dfs(root)返回resGitHublinkPython
