/**
* 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);
}
};