前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(Leetcode 2021 刷题计划) 783. 二叉搜索树节点最小距离

(Leetcode 2021 刷题计划) 783. 二叉搜索树节点最小距离

原创
作者头像
windism
修改2021-04-13 17:42:41
2620
修改2021-04-13 17:42:41
举报
文章被收录于专栏:风扬

每日一题时间: 2020-04-13 题目链接: 783. 二叉搜索树节点最小距离 官方题解链接: 二叉搜索树节点最小距离

题目

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值

代码语言:txt
复制
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1

提示:

  • 树中节点数目在范围 [2, 100]
  • 0 <= Node.val <= 105

解题方法

遍历节点

解题思路: 该题解法与 (Leetcode 2021 刷题计划) 173. 二叉搜索树迭代器 类似, 做题最关键的方法是举一反三

代码语言:txt
复制
class Solution {
public:
    int minDiffInBST(TreeNode* root) {
        stack<TreeNode*> stk;
        TreeNode *cur = root, *prev = root;
        int res = INT_MAX;
        while (cur != nullptr || !stk.empty()) {
            while (cur != nullptr) {
                stk.push(cur);
                cur = cur->left;
            }
            cur = stk.top();
            stk.pop();
            // 用来排除根节点无左节点从而产生最小值为 0 的情况
            if (cur != prev) res = min(res, abs(cur->val - prev->val));
            prev = cur;
            cur = cur->right;
        }
        return res;
    }
};
  • 复杂度分析
    • 时间复杂度: O(N)
    • 空间复杂度: O(N)

中序遍历(题解)

解题思路: 二叉搜索树如果遍历结果为单调递增, 因此采用递归方法进行最小值计算(当前值与上一个值的差的最小值)

代码语言:txt
复制
class Solution {
public:
    void dfs(TreeNode* root, int& pre, int& ans) {
        if (root == nullptr) {
            return;
        }
        dfs(root->left, pre, ans);
        if (pre == -1) {
            pre = root->val;
        } else {
            ans = min(ans, root->val - pre);
            pre = root->val;
        }
        dfs(root->right, pre, ans);
    }
    int minDiffInBST(TreeNode* root) {
        int ans = INT_MAX, pre = -1;
        dfs(root, pre, ans);
        return ans;
    }
};
  • 复杂度分析
    • 时间复杂度: O(N)
    • 空间复杂度: O(N)

参考资料

  1. 783. 二叉搜索树节点最小距离
  2. 二叉搜索树节点最小距离

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解题方法
    • 遍历节点
      • 中序遍历(题解)
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档