leetcode-530:二叉搜索树的最小绝对差

简介: leetcode-530:二叉搜索树的最小绝对差

题目

题目链接

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

示例:

输入:
   1
    \
     3
    /
   2
输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。

提示:

解题

对于二叉搜索树,中序遍历的结果正好是从小到大的,只要当前的节点的值和上一个节点的值 的绝对差,最小即可。

python解法

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def getMinimumDifference(self, root: TreeNode) -> int:
        stack = []
        cur = root
        prev = None
        best = float('inf')
        while cur or stack:
            while cur:
                stack.append(cur)
                cur = cur.left
            cur = stack.pop()
            if prev:
                best = min(best,abs(cur.val-prev.val))
            prev = cur
            cur  = cur.right
        return best

c++解法

class Solution {
public:
    int getMinimumDifference(TreeNode* root) {
        int num=INT_MAX;
        stack<TreeNode*> stack;
        TreeNode* cur=root;
        TreeNode* prev=nullptr;
        while(!stack.empty()||cur){
            while(cur){
                stack.push(cur);
                cur=cur->left;
            }
            cur=stack.top();
            stack.pop();
            if(prev) num=min(num,abs(prev->val-cur->val));
            prev = cur;
            cur=cur->right;
        }
        return num;
    }
};


相关文章
|
26天前
【LeetCode 45】701.二叉搜索树中的插入操作
【LeetCode 45】701.二叉搜索树中的插入操作
9 1
|
26天前
【LeetCode 44】235.二叉搜索树的最近公共祖先
【LeetCode 44】235.二叉搜索树的最近公共祖先
14 1
|
5月前
|
机器学习/深度学习 存储 算法
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
|
26天前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
34 0
|
26天前
【LeetCode 47】669.修剪二叉搜索树
【LeetCode 47】669.修剪二叉搜索树
8 0
|
26天前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
10 0
|
26天前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
8 0
|
26天前
【LeetCode 41】530.二叉搜索树的最小绝对差
【LeetCode 41】530.二叉搜索树的最小绝对差
9 0
|
26天前
【LeetCode 40】98.验证二叉搜索树
【LeetCode 40】98.验证二叉搜索树
10 0
|
26天前
【LeetCode 39】700.二叉搜索树中的搜索
【LeetCode 39】700.二叉搜索树中的搜索
12 0