530. 二叉搜索树的最小绝对差

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

差值是一个正数,其数值等于两值之差的绝对值。

示例 1:

530. 二叉搜索树的最小绝对差_第1张图片

输入:root = [4,2,6,1,3]
输出:1

示例 2:

530. 二叉搜索树的最小绝对差_第2张图片

输入:root = [1,0,48,null,null,12,49]
输出:1

提示:

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

总结 

遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。

同时要学会在递归遍历的过程中如何记录前后两个指针,这也是一个小技巧,学会了还是很受用的。

后面我将继续介绍一系列利用二叉搜索树特性的题目。

class Solution {
public:
    int minval = INT32_MAX;
    TreeNode* pre = nullptr;
    void dfs(TreeNode* root){
        if(!root) return;
        dfs(root->left);
        if(pre && root->val - pre->val < minval) minval = root->val - pre->val;
        pre = root;
        dfs(root->right);
    }
    int getMinimumDifference(TreeNode* root) {
        dfs(root);
        return minval;
    }
};

 

你可能感兴趣的:(leetcode练习,算法,数据结构,c++)