【LeetCode每日一题】二叉树搜索树节点最小距离
二叉树搜索树节点最小距离
1、题目描述
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。
实例1:
输入:root = [4,2,6,1,3]
输出:1
实例2:
输入:root = [1,0,48,null,null,12,49]
输出:1
2、算法描述
思想:
采用中序遍历的方式,每次遍历记住前一个数和后一个数,然后彼此相减,然后记住最小的值。
具体实现:
1、定义一个全局的变量pre(用于记录上一个节点的值),再定义一个全局变量min(用于记录比较后的最小值)
2、采用中序遍历的方式进行遍历,将最小值存储在min当中,当遍历到最后就可以得到最小的值。
3、代码实现
package com.java;
import com.bean.TreeNode;
/**
* 树中任意两不同节点值之间的最小差值
* 中序遍历
*/
public class Day13_Solution {
int pre = -1;
int min;
public int minDiffInBST(TreeNode root) {
min = root.val;
LDR(root);
return min;
}
public void LDR (TreeNode root) {
if (root == null) {
return;
}
//左节点遍历
LDR(root.left);
//中间节点进行计算
if (pre == -1) {
pre = root.val;
} else {
min = Math.min(min,root.val - pre);
pre = root.val;
}
//右节点遍历
LDR(root.right);
}
}