抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。

差值是一个正数,其数值等于两值之差的绝对值。


思路

  • 中序遍历,转换为递增的数组,然后比较两个元素之间的最小差值

学习点

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
// 中序遍历顺序
std::vector<int> tree_nodes;
void traverseBST(TreeNode *root) {
if (root == NULL)
return;

traverseBST(root->left);
tree_nodes.push_back(root->val);
traverseBST(root->right);
}
int getMinimumDifference(TreeNode* root) {
int min_diff = INT_MAX;
traverseBST(root);
for (size_t i = tree_nodes.size() - 1; i >= 1; i--) {
if (std::abs(tree_nodes[i] - tree_nodes[i - 1]) < min_diff)
min_diff = std::abs(tree_nodes[i] - tree_nodes[i - 1]);
}
return min_diff;
}
};