Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.
Example:
Input:
1
\
3
/
2
Output:
1
Explanation:
The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).
Note: There are at least two nodes in this BST.
思路:BST中序遍历后,元素正好由小到大排列
代码:
void inorder(TreeNode* node, vector<int>& res)
{
if (node==NULL)
return;
inorder(node->left,res);
res.push_back(node->val);
inorder(node->right,res);
}
int getMinimumDifference(TreeNode* root) {
vector<int> res;
inorder(root,res);
if (res.size()<2)
return 2147483647;
int ans=2147483647;
for (int i=1; i<res.size(); i++)
{
ans=min(ans,res[i]-res[i-1]);
}
return ans;
}