/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
typedef struct TreeNode Node;
int find_max(Node *node) {
int ret = INT_MIN;
while(node){
ret = node->val;
node = node->right;
}
return ret;
}
int find_min(Node *node){
int ret = INT_MAX;
while(node){
ret =node->val;
node = node->left;
}
return ret;
}
void get_ret(Node *node, int *min){
if(!node) return;
int m ;
m = find_max(node->left);
if(m != INT_MIN)
{
m = node->val - m ;
if(m <*min) {
*min = m;
}
}
m = find_min(node->right);;
if(m != INT_MAX)
{
m = m - node->val;
if(m <*min) {
*min = m;
}
}
get_ret(node->left, min);
get_ret(node->right, min);
}
int minDiffInBST(struct TreeNode* root){
int ret = INT_MAX;
get_ret(root, &ret);
return ret;
}
LeetCode-783-二叉搜索树节点最小距离-C语言
最新推荐文章于 2021-05-23 01:44:29 发布