二叉树的下一个结点

二叉树的下一个结点

https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e?tpId=13&&tqId=11210&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

如果当前结点的右结点不为空,那么找它右子树最左边的那个结点就是当前结点的下一个结点。
如果当前结点的右结点为空,那么如果当前结点是它的父节点的左结点,那么父节点就是当前结点的下一个结点;如果当前结点不是父节点的左结点,那么得找它父节点的父节点,循环刚刚的判断即可。

此题直接画图找然后就很容易理解

public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        if(pNode == null)
            return null;
        if(pNode.right != null){
            pNode = pNode.right;
            while(pNode.left != null){
                pNode = pNode.left;
            }
            return pNode;
        }

        while(pNode.next != null){
            if(pNode.next.left == pNode){
                return pNode.next;
            }
            pNode = pNode.next;
        }
        return null;
    }

剑指offer 文章被收录于专栏

为刷过的每一道题都书写一篇题解,便于重复练习~

全部评论

相关推荐

MJITG:你这算好的,有个停车场收费员岗邀请我投简历
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务