530. 二叉搜索树的最小绝对差
Posted 秃头MAN
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了530. 二叉搜索树的最小绝对差相关的知识,希望对你有一定的参考价值。
描述
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
思路
读题是一个二叉搜素树,表明当前树的中序遍历结果是一个有序的且递增的顺序,他让我们找出最小的差值,肯定是相邻的两个数计算出的结果是最小差值,我们再这些相邻的结果中一直动态的记录最小差值,找到一个就更新,这就需要我们设计一个前置节点,始终记录当前遍历节点的前一个节点
代码
class Solution
// 当前节点的,前一个节点
TreeNode preNode = null;
// 当前差的最小值
int result = Integer.MAX_VALUE;
public int getMinimumDifference(TreeNode root)
traversal(root);
return result;
// 因为是一个二叉搜素树,所以中序遍历是一个有序的顺序(递增的)
public void traversal(TreeNode root)
if(root == null) return;
traversal(root.left);
if(preNode != null)
// 因为是一个中序是递增的,所以后置节点的值大于前置节点的值
result = Math.min(result,root.val - preNode.val);
// 设置当前节点为前置节点,进入下一个节点
preNode = root;
traversal(root.right);
以上是关于530. 二叉搜索树的最小绝对差的主要内容,如果未能解决你的问题,请参考以下文章