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

二叉树的下一个结点

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

python3,非递归法。
利用中序遍历的性质:
  1. 如果有右结点,中序遍历下一个就是右结点
  2. 如果没有右结点:
  • 如果有父结点,且是父结点的左结点,返回父结点。
  • 如果有父结点,且是父结点的右结点,则循环继续向上,寻找一个父结点让自己是左结点。循环到树的根为止。
  • 没父结点,或者循环到根都没有找到合适的父结点,都返回None
class Solution:
    def GetNext(self, pNode):
        if pNode.right:
            a = pNode.right
            while a.left:
                a = a.left
            return a
        
        if pNode.next and pNode.next.left == pNode:
            return pNode.next
        
        
        while pNode.next:        
            if pNode.next.left == pNode:
                return pNode.next      
            pNode = pNode.next
        
        return None


全部评论

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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