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

二叉树的下一个结点

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

step1:如果给出的节点有右子节点,则下一个节点就是右子节点的最左节点
step2:如果给出的节点五右子节点且是父级节点的左子节点,则下一节点就是其父节点。如果给出的节点五右子节点且父节点的右子节点,则向上寻找父节点,直到找到该节点是父节点的左子节点,则下一个节点就是该父节点。时O(n),空O(1)
# -*- coding:utf-8 -*-
# class TreeLinkNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#         self.next = None
class Solution:
    def GetNext(self, pNode):
        p = pNode
        if p.right:
            p = p.right
            while (p.left):
                p = p.left
            return p
        else:
            while (p.next):
                if p.next.left == p:
                    return p.next
                p = p.next
            return None

全部评论

相关推荐

吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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