1. 程式人生 > >530. 二叉搜尋樹的最小絕對差

530. 二叉搜尋樹的最小絕對差

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); } };