LeetCode 783 题解

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;
    }
}

猜你喜欢

转载自blog.csdn.net/u011439455/article/details/80495423