写在前面
本题正好是关于二叉搜索树,正巧最近看了二叉树的相关知识,故来总结。
一、题目简介
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
输入:
1
\
3
/
2
输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
具体题目点击👉二叉搜索树的最小绝对差 - 力扣。
二、思路
二叉搜索树的中序遍历为单调不减序列,故思路为中序”+“移动搜索。
三、具体实现
class Solution {
public:
vector<int> vec;
void inParse(TreeNode* u) {
//递归结束条件
if(!u) {
return;
}
inParse(u->left);
vec.push_back(u->val);
inParse(u->right);
}
int getMinimumDifference(TreeNode* root) {
//中序+移动搜索
int ans = INT_MAX;
inParse(root);
for(int i = 0; i < vec.size() - 1; i++)
ans = min(ans, vec[i + 1] - vec[i]);
return ans;
}
};
注意:对于vec的定义一定放在类定义内部,不然力扣系统在执行多个例子的时候,会互相干扰(第一次错误提交就是因为把vec定义为了全局变量)。
五、总结
这个题简单,没什么可写的,就作此总结。