二叉树:二叉搜索树节点最小距离

783. 二叉搜索树节点最小距离

给你一个二叉搜索树的根节点 root ,返回树中任意两不同节点值之间的最小差值。

注意:本题与 530 相同

输入:root = [4,2,6,1,3]
输出:1

思路

二叉搜索树采用中序遍历,其实就是一个有序数组。

在递归遍历的过程中记录前后两个指针,就可以直接计算了。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    TreeNode prev= null;
    int ans = Integer.MAX_VALUE;

    public int minDiffInBST(TreeNode root) {
        midOrder(root);
        return ans;
    }
    public void midOrder(TreeNode root){
        if(root == null){
            return;
        }
        midOrder(root.left);
        if(prev != null){
            ans = Math.min(ans,root.val-prev.val);
        }
        prev = root;
        midOrder(root.right);
    }

}
posted @ 2021-05-05 12:18  当康  阅读(87)  评论(0编辑  收藏  举报