[leetcode]-530. Minimum Absolute Difference in BST

[leetcode]-530. Minimum Absolute Difference in BST_第1张图片x

求BST树种节点绝对差值的最小值,由BST树的性质可知,中序遍历会得到一个有序数组,显然所求必然是有序数组中所有相邻两数差的最小值。利用递归算法,在遍历的过程中,利用当前节点值和前一节点值(利用pre进行记录)求绝对值更新结果minDiff。

/**
 * 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:
    int minDiff = INT_MAX;
    int pre = -1;
    int getMinimumDifference(TreeNode* root) {
        if(root == NULL)
            return minDiff;
        getMinimumDifference(root->left);
        if(pre != -1){
            minDiff = min(minDiff,root->val - pre);   
        }
        pre = root-> val;
        getMinimumDifference(root->right);
        return minDiff;
    }
};


你可能感兴趣的:(leetcode)