530. 二叉搜尋樹的最小絕對差
阿新 • • 發佈:2018-12-11
530.二叉搜尋樹的最小絕對差
給定一個所有節點為非負值的二叉搜尋樹,求樹中任意兩節點的差的絕對值的最小值。
示例 :
輸入: 1 \ 3 / 2 輸出: 1 解釋: 最小絕對差為1,其中 2 和 1 的差的絕對值為 1(或者 2 和 3)。
注意: 樹中至少有2個節點。
分析: 中序遍歷二叉搜尋樹,將節點加入陣列。依次計算差值,找出最小的。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> nums;
int getMinimumDifference(TreeNode* root) {
int dif=INT_MAX;
dfs(root);
for(int i=1;i<nums.size();i++)
{
if(nums[i]-nums[i-1]<dif) dif=nums[i]-nums[i-1];
}
return dif;
}
void dfs(TreeNode* root)
{
if(root==NULL) return;
dfs(root->left);
nums.push_back(root->val);
dfs(root->right);
}
};