/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/*
* 算法思想:遍历所有树节点 ,寻找比所给节点值大的所有节点中的值最小的节点,并将节点地址记录下来返回即可 。
*/
int get(struct TreeNode* node, int val, int *min, struct TreeNode** ret){
if(!node) return;
if(node->val > val && node->val < *min){
*min = node->val;
*ret = node;
}
get(node->left, val, min, ret);
get(node->right, val, min, ret);
return 0;
}
struct TreeNode* inorderSuccessor(struct TreeNode* root, struct TreeNode* p) {
int min = INT_MAX;
struct TreeNode* ret = NULL;
get(root, p->val, &min, &ret);
if(min == INT_MAX)
return NULL;
return ret;
}
leetcde-285. 二叉搜索树中的顺序后继-C语言
最新推荐文章于 2021-11-22 23:10:55 发布