您的位置:首页 > Web前端

LeetCode 530 Minimum Absolute Difference in BST(BST中序遍历)

2017-04-09 11:15 387 查看
Given a binary search tree with non-negative values, find the minimum absolute
difference between values of any two nodes.

Example:
Input:

1
\
3
/
2

Output:
1

Explanation:
The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).


Note: There are at least two nodes in this BST.
题目大意:给出一个至少有2个节点且节点中数字均为非负整数的BST,输出任意两个节点之差的最小绝对值。

解题思路:因为BST的中序遍历会按从小到大的顺序遍历节点,所以可以把中序遍历的结果存到数组里,然后比较数组中相邻两数字差的绝对值,就可以得到差的最小绝对值。

代码如下:

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#define maxn 100000
int arr[maxn]={0},cnt;
void inorderTraval(struct TreeNode* root)
{
if(!root) return ;
inorderTraval(root->left);
arr[cnt++] = root->val;
inorderTraval(root->right);
}

int getMinimumDifference(struct TreeNode* root) {
int min = 1e10;
inorderTraval(root);
for(int i = 1;i < cnt;i++){
int temp = arr[i] - arr[i-1];
if(min > temp) min = temp;
}
cnt = 0;
return min;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode