zoukankan      html  css  js  c++  java
  • 530. 二叉搜索树的最小绝对差

    二叉搜索树的最小绝对差

    题目

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

    示例:

    输入:
    
       1
        
         3
        /
       2
    
    输出:
    1
    

    解释:
    最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
     
    提示:
    树中至少有 2 个节点。
    本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同

    思路

    很久没做二叉树的题目了,借此题目来复习一下搜索二叉树的一些性质。
    这道题目要求任意结点之间最小绝对值,那么如果是一个升序的数组的话,其最小绝对值肯定是在相邻之间的位置
    所以我们采用中序遍历的办法,并且用一个值来记录当前最小绝对值,不断进行更新。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        void dfs(TreeNode* root,int &pre,int& ans)
        {
            if(root == NULL) 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 getMinimumDifference(TreeNode* root) {
            //利用中序遍历,按升序排列的数组 差值绝对值最小的点肯定是相邻的
    
            int ans = INT_MAX;
            int pre =-1;
            dfs(root,pre,ans);
            return ans;
       
    
        }
    };
    

    链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst

  • 相关阅读:
    request内置对象
    JSP页面、包含
    HTTP协议
    html简介
    数据访问层工具类
    数据运算
    可变于不可变对象分类
    有序 无序 的区别
    字符串方法
    day01_final
  • 原文地址:https://www.cnblogs.com/jiashun/p/LeetCode_530.html
Copyright © 2011-2022 走看看