JZ8 二叉树的下一个结点
给定
-*- 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 pNode.right: # 有右儿子
pNode = pNode.right # 右节点的最左节点
while pNode.left:
pNode = pNode.left
return pNode
while pNode.next: # 没有右儿子,则向上寻找父节点
parent = pNode.next
if parent.left == pNode: return parent
else:
pNode = parent
return None