//LeetCode 530 二叉搜索树节点最小绝对值
package leetcode;
import java.util.ArrayList;
public class TwoTree530 {
static ArrayList<Integer> list = new ArrayList<>();//静态变量,用于存储二叉树中序遍历结果
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] nums530 = {4,2,6,1,3};
TreeNode root530 = new TreeNode().setTree(nums530);//构造二叉树,见链接https://blog.csdn.net/weixin_42709114/article/details/120332648
System.out.println(getMinimumDifference(root530));
}
public static int getMinimumDifference(TreeNode root) {
inorder(root);//对二叉搜索树进行中序遍历,得到升序数组
int n = list.size();
int[] nums = new int[n];
for(int i = 0;i<n;i++)
{
nums[i] = list.get(i);//将ArrayList转为数组进行求极值操作
}
int min = Math.abs(nums[1] - nums[0]);
for(int i = 1;i<n;i++)
{
min = Math.min(Math.abs(nums[i] - nums[i - 1]),min);//不断进行比较更新
}
return min;//返回最小值
}
public static void inorder(TreeNode node){
if(node == null)
return ;
inorder(node.left);
list.add(node.val);
inorder(node.right);
}
}