二叉搜索树的最小绝对差
题目描述
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
解题思路
利用二叉树的中序遍历,吧序列存放在数组当中,然后逐差,得到最小值即可。
题解
class Solution {
public:
int getMinimumDifference(TreeNode* root) {
int ans;
if(!root){
return ans;
}
stack<TreeNode*> st;
vector<int> arr;
TreeNode* cur = root;
while(!st.empty() || cur != NULL){
if(cur != NULL){
st.push(cur);
cur = cur->left;
}
else{
cur = st.top();
st.pop();
arr.push_back(cur->val);
cur = cur->right;
}
}
ans = arr[1] - arr[0];
for(int i = 2; i < arr.size(); i++){
if(arr[i] - arr[i-1] < ans){
ans = arr[i] - arr[i-1];
}
}
return ans;
}
};