给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
class Solution {
public:
vector<int> pre;
void preorder(TreeNode* root)
{
if(root==nullptr) return;
preorder(root->left);
this->pre.push_back(root->val);
preorder(root->right);
}
int getMinimumDifference(TreeNode* root)
{
int res=-1;
preorder(root);
for( int i = 1 ; i < this->pre.size();i++)
{
int cal=0;
if(this->pre[i]-this->pre[i-1] >=0)
cal=this->pre[i]-this->pre[i-1];
else
cal=this->pre[i-1]-this->pre[i];
if(res<0||res>cal)
res=cal;
}
return res;
}
};
思路:
二叉搜索树中序遍历得到有序序列(代码写错了,应该Inorder不是preorder),然后插值最小的两个节点在序列中一定相邻,所以计算相邻节点的最小差值即可