Leetcode une question quotidienne: 530. différence-absolue-minimale-en-bst (la valeur absolue minimale d'un arbre de recherche binaire)

Insérez la description de l'image ici
Idée: selon la nature du parcours dans l'ordre de l'arbre de recherche binaire qui augmente, il suffit de lister les résultats du parcours dans l'ordre, et de parcourir une fois pour obtenir la plus petite valeur absolue, ou de min{now-pre,res}comparer pendant le parcours dans l'ordre
Insérez la description de l'image ici

Insérez la description de l'image ici

    void dfs(TreeNode* root, int& pre, int& ans) {
    
    
        if (root == nullptr) {
    
    
            return;
        }
        dfs(root->left, pre, ans);
        
        if (pre == -1) {
    
     
            pre = root->val; //遍历到最左侧的节点时,将pre值初始化,此时pre代表整个二叉搜索树中的最小值
        } else {
    
     //将当前值与pre值做差与ans作比较,更新pre值
            ans = min(ans, root->val - pre); //因为当前值都比pre值大(中序遍历递增),所以不用加绝对值
            pre = root->val;
        }
        dfs(root->right, pre, ans);
    }
    int getMinimumDifference(TreeNode* root) {
    
    
        int ans = INT_MAX, pre = -1;
        dfs(root, pre, ans);
        return ans;
    }

Je suppose que tu aimes

Origine blog.csdn.net/wyll19980812/article/details/109035774
conseillé
Classement