给定具有非负值的二叉搜索树,找到任意两个节点的值之间的最小绝对差值.
样例
输入
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
*/
int getMinimumDifference(TreeNode * root) {
// Write your code here
recursion(root);
int min=tmp[1]-tmp[0];
for (int i = 1; i < tmp.size(); i++) {
/* code */
min=min<tmp[i]-tmp[i-1]?min:tmp[i]-tmp[i-1];
}
return min;
}
void recursion(TreeNode*root)
{
if(root==NULL) return;
recursion(root->left);
tmp.push_back(root->val);
recursion(root->right);
}
private: std::vector<int> tmp;
};