思路
先遍历树把所有值都放进一个数组中,将数组排序,然后再遍历查找最小差值即可。
复杂度:$O(N\log{N})$
代码
class Solution {
public:
vector<int> arr;
void treeIte(TreeNode *root){
arr.push_back(root->val);
if (root->left) treeIte(root->left);
if (root->right) treeIte(root->right);
}
int minDiffInBST(TreeNode *root) {
treeIte(root);
sort(arr.begin(), arr.end()); // 复杂度的来源
int res = INT_MAX;
for (int i = 1; i < arr.size(); i ++ )
res = min(res, arr[i] - arr[i - 1]);
return res;
}
};