题目: 给定一颗二叉树金额其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针
思路:分两种情况:(1)当给定的节点有右孩子时,下一个节点就是其右子树中的最左节点
(2)当给定的节点没有右孩子时,节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;否则 继续向上遍历其父节点的父节点,重复之前的判断,返回结果。
# -*- 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):
if not pNode:
return None
if pNode.right!=None:
pNode=pNode.right
while pNode.left!=None:
pNode=pNode.left
return pNode
else:
while pNode.next!=None:
if pNode==pNode.next.left:
return pNode.next
pNode=pNode.next
return None