对于给定的节点:
- 如果它可以是一个父节点,根据中序遍历的规则,需要输出它右子树中的最左子节点,即代码中的11-15行
- 如果它不是父节点:(16-19)
- 若它是它父节点的左叶子,则返回它的父节点
- 若它是右叶子,则不断向上搜索父节点,直至有一个父节点k不是k的父节点的右叶子,此时返回k的父节点。
- 如果直到根节点上述情况还不成立,有可能该节点是最后一个节点或是输入的二叉树为None,则输出None
# -*- 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
while pNode.next and pNode.next.right == pNode:
pNode = pNode.next
if pNode.next:
return pNode.next
return None

京公网安备 11010502036488号