问题LeetCode给定一棵以根节点root为根节点的二叉搜索树(BST),返回树中任意两个不同节点的值之间的最小差值。例子:输入:root=[4,2,6,1,3,null,null]输出:1解释:注意root是一个TreeNode对象,而不是数组。给定的树[4,2,6,1,3,null,null]用下图表示:4/\26/\13而这棵树的最小差值是1,它出现在节点1和节点2之间,也出现在节点3和节点2之间。注意:BST的大小会在2到100之间。BST永远有效,每个节点的值为整数,每个节点的值都不一样。这道题和530一样:https://leetcode.com/problems。..问题Leetcode给定二叉搜索树的根节点root,返回树中任意两个节点之间的差值的最小值。示例:输入:root=[4,2,6,1,3,null,null]输出:1解释:注意root是一个TreeNode对象,而不是一个数组。给定的树[4,2,6,1,3,null,null]可以表示为下图:4/\26/\13最小的差为1,即节点1与节点的差2的值,也就是节点3和节点2的差值。注:二叉树的大小范围是2到100。二叉树永远有效,每个节点的值都是整数,不重复。本题同530:https://leetcode-cn.com/probl...DFS方法一:dfs遍历取节点值,然后计算最小绝对差方法二:dfs遍历直接比较绝对值Python3代码方法1#定义一个二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defminDiffInBST(self,root:TreeNode)->int:#方案一:dfs遍历取节点值,然后计算最小绝对差defdfs(root):ifnotroot:return#中序遍历是递增的ifroot.left:dfs(root.left)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解决方案:defminDiffInBST(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
