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

二叉树的下一个结点

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

/*
分三种情况:
1. 该节点有右子,直接找到右子树中的最左节点,并返回
2. 该节点无右子树
	1.该节点在其父节点的左树:直接返回其父节点
	2.在其父节点的右树,一直向父节点找。
*/
class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        if(!pNode)
        {   
            return nullptr;
        }

        TreeLinkNode *pnext=nullptr;
        
        if(pNode->right)
        {   
            TreeLinkNode *pr=pNode->right;
            while(pr->left)
            {   
                pr=pr->left;
            }
            pnext=pr;
        }
        else if(pNode->next)
        {           
            TreeLinkNode *pcur=pNode;
            while(pcur->next&&pcur==pcur->next->right)
            {       
                pcur=pcur->next;
            }
            pnext=pcur->next;
        }
    return pnext;
    }
};

全部评论

相关推荐

06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务