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

二叉树的下一个结点

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

暴力解法当然就是按照中序遍历一遍,但这题中参数只给了待查找的子树根节点,中序遍历操作过于麻烦,最好是从子树根节点直接开始查找。

  1. 如果子树根节点存在右节点,则从该右节点开始,一路向左查找;

  2. 否则,子树根节点的中序遍历下一个节点只能在其父辈中查找,并且只有将当前根节点作为左节点的父节点符合条件:

    1. 往上查找,找到第一个把当前根节点当做左子节点的父节点;

    2. 如果不存在,则待查找子树根节点是该树中序遍历的最后一个节点,返回NULL。

class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        if(!pNode)
            return NULL;
        TreeLinkNode* temp = NULL;
        if(pNode->right){
            temp = pNode->right;
            while(temp->left){
                temp = temp->left;
            }
        }
        else if(pNode->next){
            while(pNode->next && pNode->next->right == pNode){
                pNode = pNode->next;
            }
            temp = pNode->next;
        }
        return temp;
    }
};
全部评论

相关推荐

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

创作者周榜

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