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

二叉树的下一个结点

http://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) {
        if (!pNode) return nullptr;
        
        if (pNode->right) {    //如果有右子树,则中序遍历下一个节点为右子树的左叶
            pNode = pNode->right;
            while (pNode->left) pNode = pNode->left;
            return pNode;
            
        } else if (pNode->next) {    //找到节点所在左子树的最近根节点,否则返回空
            TreeLinkNode *next = pNode->next;    //上一层节点
            while (next && next->left != pNode) {
                pNode = next;
                next = pNode->next;
            }
            
            if (next && next->left == pNode) return next;
        }
        
        return nullptr;
    }
};
全部评论

相关推荐

10-29 22:30
吉林大学 Java
同专业学长学姐,去互联网大厂的起薪 15k+,去国企 IT 岗的也有 12k+,就连去中小厂的都基本 13k 起步😤 我投的传统行业技术岗,拼死拼活拿到 1Woffer,本来还挺开心,结果逛了圈牛客直接破防,同是校招生,行业差距怎么就这么大啊!
喵喵喵6_6:应该哪里不对吧,大厂都是20k以上的,10k那种对于985本的学生基本就是点击一下过了笔试就送的,我前两天刚拿了一个11k,笔试完第2天就打电话了,非科班。坏消息是c++岗开这么低真是刷新认知了
校招生月薪1W算什么水平
点赞 评论 收藏
分享
notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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