其他分享
首页 > 其他分享> > leetcode 530 二叉搜索树的最小绝对差

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

作者:互联网

前言

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

参考题解:530.二叉搜索树的最小绝对差-代码随想录


提交代码

方法一:线索二叉树的中序遍历结果为升序。将中序遍历的结果放入vector中,然后顺序求差比较。

方法二:我们也可以边遍历,边比较。我们需要比较中序遍历过程中,相邻节点的差值。重点在于递归过程中如何保存前一个节点的值。参考题解的代码,具有借鉴意义。

方法一代码。

class Solution {
public:
    void inorder_traverse(TreeNode* root, vector<int>& result){
        // 线索二叉树的中序遍历结果,为升序
        if(root == nullptr)
            return;
        inorder_traverse(root->left,result);
        result.push_back(root->val);
        inorder_traverse(root->right,result);
    }

    int getMinimumDifference(TreeNode* root) {
        vector<int> result;
        inorder_traverse(root,result);
        int min = INT_MAX;
        for(int i=1; i<result.size(); i++){
            if(result[i]-result[i-1] < min)
                min = result[i]-result[i-1];
        }
        return min;
    }
};

方法二代码。代码来自参考题解。

class Solution {
private:
int result = INT_MAX;
TreeNode* pre;
void traversal(TreeNode* cur) {
    if (cur == NULL) return;
    traversal(cur->left);   // 左
    if (pre != NULL){       // 中
        result = min(result, cur->val - pre->val);
    }
    pre = cur; // 记录前一个
    traversal(cur->right);  // 右
}
public:
    int getMinimumDifference(TreeNode* root) {
        traversal(root);
        return result;
    }
};

标签:遍历,TreeNode,cur,int,二叉,result,530,root,leetcode
来源: https://blog.csdn.net/sinat_38816924/article/details/120395280