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

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

二叉搜尋樹的最小絕對差

題目描述: 給定一個所有節點為非負值的二叉搜尋樹,求樹中任意兩節點的差的絕對值的最小值。

題目分析:根據二叉搜尋樹的性質可得,按中序遍歷,即可得到一個遞增的序列,所以問題轉換為,對於一個遞增的序列,求相鄰元素的最小絕對差。

程式碼如下:

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