您的位置:首页 > Web前端

LeetCode 530. Minimum Absolute Difference in BST (二叉树、递归)

2017-05-27 14:40 435 查看
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.

输入一个二叉查找树(BTS),输出其中两个节点之差的最小值。

思路:根据BTS的性质,一个节点A的左叶子L的值小于A的值,右叶子R的值大于A的值。所以,对BTS进行中序遍历,得到的就是一个升序排列的序列。在有序序列中,两个值之差的最小值只可能出现在相邻的两个元素,所以遍历这个序列即可。

/**
* 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 {
private:
vector<int> tree;
public:
void inOrder(TreeNode* root){
if(root->left!=NULL)inOrder(root->left);
tree.push_back(root->val);
if(root->right!=NULL)inOrder(root->right);
}
int getMinimumDifference(TreeNode* root) {
inOrder(root);
int minVal = INT_MAX;
for(int i=1;i<tree.size();i++)
minVal = min(tree[i]-tree[i-1],minVal);
return minVal;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: