题目描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路:
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 not pNode:
return pNode
if pNode.right:
left1=pNode.right
while left1.left:
left1=left1.left
return left1
p=pNode
while pNode.next:
tmp=pNode.next
if tmp.left==pNode:
return tmp
pNode=tmp