https://leetcode.com/problems/minimum-distance-between-bst-nodes/description/
题目大意:问一颗二叉搜索树里两个节点间差的最小值。
解题思路:我的做法是遍历后用list存储所有节点,之后排序找最小差值。比较优秀的做法是利用二叉搜索树的性质,中序遍历出的序列是有序的然后直接计算。
class Solution { private List<Integer> list; private void dfs(TreeNode root) { if(root.left!=null) { list.add(root.left.val); dfs(root.left); } if(root.right!=null) { list.add(root.right.val); dfs(root.right); } return ; } public int minDiffInBST(TreeNode root) { int res=9999; list = new ArrayList<>(); list.add(root.val); dfs(root); Collections.sort(list); int pre = list.get(0); for(int i=1;i<list.size();i++) { int tmp = list.get(i); res = Math.min(res,tmp-pre); pre = tmp; } return res; } }