- 分析
因为是二叉搜索树,所以满足条件的结点肯定是中序遍历后相邻的结点,递归地进行中序遍历,使用pre记录前面结点的值,这样遍历完整棵树就可以得到任意结点最小距离。 - 代码
class Solution {
public:
int min;
int minDiffInBST(TreeNode* root) {
min = INT_MAX;
int pre = -100001;
traverse(root, pre);
return min;
}
void traverse(TreeNode* root, int& pre){
if(nullptr == root) return;
traverse(root -> left, pre);
if(root -> val - pre < min) min = root -> val - pre;
pre = root -> val;
traverse(root -> right, pre);
}
};