Leetcode 530. 二叉搜尋樹的最小絕對差
阿新 • • 發佈:2018-12-16
二叉搜尋樹的最小絕對差
題目描述: 給定一個所有節點為非負值的二叉搜尋樹,求樹中任意兩節點的差的絕對值的最小值。
題目分析:根據二叉搜尋樹的性質可得,按中序遍歷,即可得到一個遞增的序列,所以問題轉換為,對於一個遞增的序列,求相鄰元素的最小絕對差。
程式碼如下:
void inorder(TreeNode *root, int & min, int & pre){ //min為相鄰元素最小差,pre為前一個元素
if(root != NULL){
inorder(root->left, min, pre);
if(pre != -1)
if(root-> val-pre < min)
min = root->val-pre;
pre = root->val;
inorder(root->right, min, pre);
}
}
int getMinimumDifference(TreeNode *root){
int min = 10000, pre = -1; //初始min設為一個足夠大的值,pre設為-1
inorder(root, min, pre);
return min;
}