二叉树的下一个结点

二叉树的下一个结点

http://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e

中序遍历
左子结点 - 父节点 - 右子结点

先看有没有右子结点,右子节点有没有左子结点,
再看有没有比他大的父节点
就可以了

class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode)
    {
        if(pNode->right)//还有右子节点
        {
            pNode = pNode->right;//移动到右子节点
            while(pNode->left)//有左子节点,移动到左子节点
            {
                pNode = pNode->left;
            }
            return pNode;//返回该节点
        }
        else//没有右子节点,寻找最近一个比该节点大的祖先节点
        {
            while(pNode->next)
            {
                if(pNode->val < pNode->next->val)
                {
                    return pNode->next;
                }
                pNode = pNode->next;
            }
        }
        return NULL;//没有右子节点,没有比他大的祖先节点,则该点为最右叶子节点,没有下一个节点,返回NULL
    }
};
全部评论

相关推荐

有没有经济学家能告诉我,三年后中国的就业市场会不会好转?我在校招中拿到了一份9k+的offer,还是行业的龙头企业,心里其实不想再考研了。但又总是担心,万一读研后薪资更高,我会不会后悔呢?
Fyhyuky:三年后肯定不会啊,只会比现在更烂,你自己看看现在有没有什么增长点,电车都是国家补贴兜底才发展出来的,已经比较违背市场自然规律了,互联网更不用说了,国家强力打压,传统制造业转型失败,现在苟延残喘中
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务