# -*- 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):
# write code here
# 情况一,有右子树,找到右子树的叶子左节点
if pNode.right:
pNode = pNode.right
while pNode.left:
pNode = pNode.left
return pNode
# 情况二,没有右子树,且不为根节点,且为父节点的左子树,返回父节点
if pNode.next and pNode == pNode.next.left:
return pNode.next
# 情况三,没有右子树,且不为根节点,找到第一个为父节点左子树的节点,返回其父节点
if pNode.next:
while pNode.next and pNode == pNode.next.right:
pNode = pNode.next
return pNode.next
# 根节点,没有右子树,直接返回空
return None