/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void help(struct TreeNode* root,int *pre,int *res){
if(!root)
return;
help(root->left,pre,res);
if(*pre != -1){
if(*res > (root->val-*pre))
*res = root->val-*pre;
}
*pre = root->val;
help(root->right,pre,res);
}
int minDiffInBST(struct TreeNode* root) {
int res = 1000,pre=-1;
help(root,&pre,&res);
return res;
}
优化了下空间,不过速度还是慢了点,换成c++的版本就快了好多。。。
class Solution {
public:
int minDiffInBST(TreeNode* root) {
int res = 1000, pre = -1;
help(root, pre, res);
return res;
}
void help(TreeNode* node, int& pre, int& res) {
if (!node) return;
help(node->left, pre, res);
if (pre != -1)
res = min(res, node->val - pre);
pre = node->val;
help(node->right, pre, res);
}
};
本文介绍了一种算法,用于寻找二叉搜索树中任意两个节点之间的最小差值。通过递归遍历树的左子树和右子树,算法能够有效地找到最小差值。在遍历过程中,算法维护了一个前驱节点的值和当前最小差值。
444

被折叠的 条评论
为什么被折叠?



