给定具有非负值的二叉搜索树,找到任意两个节点的值之间的最小绝对差值.
样例
输入
1
\
3
/
2
输出:
1
说明:
最小绝对差值为1,即2和1(或2和3之间)之差。
注意事项
此BST中至少有两个节点。
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root
* @return: the minimum absolute difference between values of any two nodes
*/
vector<int> nums;
int getMinimumDifference(TreeNode * root) {
// Write your code here
bianli(root);
sort(nums.begin(), nums.end());
int ret = INT_MAX;
for(int i = 1; i < nums.size(); i++)
{
ret = min(ret, abs(nums[i]-nums[i-1]));
}
return ret;
}
void bianli(TreeNode * root)
{
if(root != NULL)
{
nums.push_back(root->val);
bianli(root->left);
bianli(root->right);
}
}
};