1.问题

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

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

示例 1:

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

        对二叉搜索树进行中序遍历得到一个有序的数组,然后计算相邻两个数的差值,找到最小的值即可。

3.代码实现
  vector<int> record;
private:
    void traversal(TreeNode* root){
        if(root==nullptr) return;

        traversal(root->left);

        record.push_back(root->val);

        traversal(root->right);
    }
public:
    int getMinimumDifference(TreeNode* root) {
        
        int result = INT_MAX;
        traversal(root);

        for(int i=1;i<record.size();i++)
        {
            if(record[i]-record[i-1]<result){
                result = record[i]-record[i-1];
            }
        }
        return result;
    }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐