题解 | 二叉树的下一个结点

二叉树的下一个结点

https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

/*
struct TreeLinkNode {
    int val;
    struct TreeLinkNode *left;
    struct TreeLinkNode *right;
    struct TreeLinkNode *next;
    TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
        
    }
};
*/
class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        TreeLinkNode* rightNode = pNode->right;
        if(rightNode!=nullptr){
            while(rightNode->left!=nullptr){
                rightNode = rightNode->left;
            }
            return rightNode;
        }
        else{
            TreeLinkNode* res = pNode;
            while(res->next){
                if(res->next->left == res) return res->next;
                res = res->next;
            }
        }
        return nullptr;
        
    }
};

全部评论
用递归很麻烦 只有两种情况: 右子树存在,找右子树最左边的点 右边子树不存在,找自己所在子树根节点的左父亲节点,不然就一直往上找
点赞 回复 分享
发布于 04-21 18:31 上海

相关推荐

求面试求offer啊啊啊啊:1600一个月?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务