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 ;
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;
}