mirror of
https://gitee.com/TheAlgorithms/LeetCodeAnimation.git
synced 2024-12-06 15:19:44 +08:00
commit
3302fb3666
BIN
0530-minimum-absolute-difference-in-bst/Animation/0530.m4v
Normal file
BIN
0530-minimum-absolute-difference-in-bst/Animation/0530.m4v
Normal file
Binary file not shown.
@ -0,0 +1,95 @@
|
||||
# 530. 二叉搜索树的最小绝对差
|
||||
|
||||
> 本文首发于公众号「图解面试算法」,是 [图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>) 系列文章之一。
|
||||
>
|
||||
> 同步博客:https://www.algomooc.com
|
||||
|
||||
题目来源于 LeetCode 上 530. 二叉搜索树的最小绝对差. 是关于树的一道题。
|
||||
|
||||
## 题目
|
||||
|
||||
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
输入:
|
||||
|
||||
1
|
||||
\
|
||||
3
|
||||
/
|
||||
2
|
||||
|
||||
输出:
|
||||
1
|
||||
|
||||
解释:
|
||||
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
|
||||
```
|
||||
|
||||
提示:
|
||||
|
||||
树中至少有 2 个节点。
|
||||
本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同
|
||||
|
||||
|
||||
|
||||
## 题目解析
|
||||
|
||||
计算树中任意两节点的差的绝对值的最小值,那么肯定是要遍历树,然后相邻节点求差对比是不是最小的。
|
||||
二叉树的遍历有三种,前序遍历,中序遍历,后序遍历。
|
||||
|
||||
题目中给的是二叉搜索树,二叉搜索树有一个特色,就是中序遍历出来的结果,值是按照从小到大排列的。
|
||||
|
||||
所以我们只要中序遍历,保存上一个节点,然后遍历的时候取得当前节点和上一个节点的值的绝对值,如果比当前最小差还要小,那么更新最小差。
|
||||
|
||||
中序遍历是遍历左子树,然后根节点,最后是右子树,我们用递归去实现。
|
||||
|
||||
## 动画理解
|
||||
|
||||
|
||||
<video id="video" controls="" preload="none" >
|
||||
<source id="mp4" src="../Animation/0530.m4v" type="video/mp4">
|
||||
</video>
|
||||
|
||||
## 参考代码
|
||||
|
||||
|
||||
```javaScript
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* function TreeNode(val) {
|
||||
* this.val = val;
|
||||
* this.left = this.right = null;
|
||||
* }
|
||||
*/
|
||||
/**
|
||||
* @param {TreeNode} root
|
||||
* @return {number}
|
||||
*/
|
||||
var getMinimumDifference = function(root) {
|
||||
let min = Number.MAX_VALUE
|
||||
let preNode = null
|
||||
var travelTree = function (node) {
|
||||
if (node) {
|
||||
travelTree(node.left)
|
||||
if(preNode) {
|
||||
min = Math.min(min, Math.abs(preNode.val - node.val))
|
||||
}
|
||||
preNode = node
|
||||
travelTree(node.right)
|
||||
}
|
||||
}
|
||||
travelTree(root)
|
||||
return min
|
||||
};
|
||||
```
|
||||
|
||||
## 复杂度分析
|
||||
|
||||
时间复杂度:O(N),N为树中节点个数。
|
||||
|
||||
空间复杂度:O(log(N))。
|
||||
|
||||
![](../../Pictures/qrcode.jpg)
|
Loading…
Reference in New Issue
Block a user