解答:看到二叉搜索树,就思考二叉搜索树的中序遍历为有序数组是否有用,哎因为这题是求最小差值,所以能用该技巧,首先通过O(n)将二叉搜索树中序遍历结果存储到res数组中,然后因为res数组是上升的所以最小值只可能是i减i-1,所以for循环遍历结果数组得到最小值然后输出。总时间复杂度为O(n),空间复杂度为O(n)。
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    vector<int> res;
    int minDifference(TreeNode* root) {
        // write code here
        if(root==NULL){return 0;}
        int mint=INT32_MAX;
        dfs(root);
        for(int i=1;i<res.size();i++){
            mint=min(mint,res[i]-res[i-1]);
        }
        return mint;
    }
    void dfs(TreeNode* root){
        if(root==NULL){return ;}
        dfs(root->left);
        res.push_back(root->val);
        dfs(root->right);
    }
};