二叉树:二叉搜索树节点最小距离
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);
}
}