给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
基本思路:
1.二叉树为空,返回空。
2.该结点存在右子树,返回右子树最左边的结点。
3.该结点不是根结点,如果该结点是其父结点的左孩子,返回其父结点;否则继续向上找父结点,重复之前的判断,返回结果。
# -*- 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 == None:
return None
if pNode.right:
p = pNode.right
while p.left:
p = p.left
return p
p = pNode.next
while p:
if p.left == pNode:
return p
pNode = pNode.next
p = p.next
return None