https://leetcode.com/problems/minimum-distance-between-bst-nodes/description/
一个点:BST的性质是,如果中序遍历,能直接得到排序后的结果。所以中序遍历,然后记录上次遍历的值就行。
主要还是怎么把代码写的好看的问题。
class Solution {
public:
int dfs(TreeNode* root, int &last_v) {
int ans = INT_MAX/2;
if (root->left) {
ans = min(ans, dfs(root->left, last_v));
}
ans = min( ans, root->val - last_v);
last_v = root->val;
if (root->right) {
ans = min(ans, dfs(root->right, last_v));
}
return ans;
}
int minDiffInBST(TreeNode* root) {
int v = INT_MIN/2;
return dfs(root, v);
}
};