leetcode[Minimum Absolute Difference in BST]//待整理多种解法

来源:互联网 发布:淘宝卖店铺 编辑:程序博客网 时间:2024/06/03 13:16

解法一:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {//问题描述:找出二分查找树中结点间的最小距离,这两个结点来自于二分查找树中的任意两个结点//分析:因为二分查找树的中根遍历是有序的,而最小节点必然来自于这个有序序列的两两之间//那么可以将中根遍历序列存起来,之后两两比较,也可以直接在中根遍历时就比较//这里采用将中根序列先存起来的方式private void recurse(TreeNode root, List<Integer> list){if(root == null) return;recurse(root.left, list);list.add(root.val);//System.out.println(root.val);recurse(root.right, list);}    public int getMinimumDifference(TreeNode root) {    ArrayList<Integer> list = new ArrayList<>();    recurse(root, list);    //因为题目中提到二分查找树中至少有两个结点    int min = list.get(1) - list.get(0);    for(int i = 1; i < list.size() - 1; i++){    min = Math.min(min, list.get(i + 1) - list.get(i));    }        return min;    }}


阅读全文
1 0