2022-5-16 每日一题-leetcode

题目链接:https://leetcode.cn/problems/successor-lcci/

个人题解:

  1. 先判断是不是在右子树,如果是在右子树的话直接遍历即可。
  2. 反之,我们要重建一个 \(node\),从头节点开始遍历。

代码:

class Solution {
public:
    TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
        TreeNode* node=root;
        TreeNode* res=NULL;

        if(p->right){
            res=p->right;
            while(res->left) res=res->left;
            return res;
        }
        else{
            while(node){
                if(node->val>p->val){
                    res=node;
                    node=node->left;
                }
                else node=node->right;
            }
            return res;
        }
    }
};

运行截图:

image

posted @ 2022-05-16 10:31  黑VS白-清墨  阅读(29)  评论(0)    收藏  举报