先通过中序遍得到有序数组,再遍历数组找最小差值。
class Solution {
public:
void dfs(TreeNode* root, vector<int> &nums) //中序遍历模板
{
if (!root) return;
dfs(root->left, nums);
nums.push_back(root->val);
dfs(root->right, nums);
}
int minDiffInBST(TreeNode* root) {
vector<int> nums;
dfs(root, nums); //此时nums已经是一个有序数组了
int min_val = 100;
for (int i = 1; i < nums.size(); i ++ ) //遍历找两个相邻值之间的最小差值
{
int t = nums[i] - nums[i - 1];
min_val = min(min_val, t);
}
return min_val;
}
};