代码随想录——25二叉搜索树的最小绝对值差(递归遍历如何记录前后两个指针)

image
image

本题重点是记录怎样在“递归遍历中记录前后两个指针”

  1. 设一个指针pre,而递归函数的参数就是cur。

  2. pre不为空则执行操作,操作结束了pre = cur(包含了pre为空的情况)

代码:

class Solution {
public:
    int ans = INT_MAX;
    TreeNode* pre;
    void dfs(TreeNode* root){
        if(root == nullptr)return;
        dfs(root->left);
        // if(pre == nullptr){
        //     pre = root;
        // }else{//蠢的没边了——传进来的root不就是cur节点吗
        // }
        if(pre!=nullptr){
            ans = min(root->val - pre->val,ans);
        }
        pre = root;
        dfs(root->right);
    }
    int getMinimumDifference(TreeNode* root) {
        dfs(root);
        return ans;
    }
};
posted @ 2024-11-25 09:52  NeroMegumi  阅读(18)  评论(0)    收藏  举报