算法
(中序遍历) $O(n)$
对BST进行中序遍历即可获得BST上从小到大的所有元素,然后对元素遍历即可得到答案。
C++ 代码
class Solution {
public:
int getMinimumDifference(TreeNode* root) {
vector<int> nums;
preTraversal(root, nums);
int ans = nums[1] - nums[0];
for (int i = 2; i < nums.size(); i++)
ans = min(ans, nums[i] - nums[i - 1]);
return ans;
}
void preTraversal(TreeNode *root, vector<int> &nums)
{
if (root == NULL)
return;
preTraversal(root->left, nums);
nums.push_back(root->val);
preTraversal(root->right, nums);
}
};