给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节
点的差的绝对值的最小值。
思路:
首先这是一个二叉搜索树,满足左<根<右,中序遍历得到一个递增的数组。
相邻两数的差值的最小值就是答案。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int ans,pre;
public int getMinimumDifference(TreeNode root)
{
ans = Integer.MAX_VALUE;//最大的int
pre = -1;//保存前驱结点的值
dfs(root);
return ans;
}
public void dfs(TreeNode root)
{
if(root == null)
{
return ;
}
//左根右的顺序
dfs(root.left);
if(pre == -1)
{
pre = root.val;
}
else
{
ans = Math.min(ans,root.val-pre);
pre = root.val;
}
dfs(root.right);
}
}