您好,登錄后才能下訂單哦!
題目描述
給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點并且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。
class TreeLinkNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
self.parent = None
class Solution:
"""
給定節點,求中序遍歷下該節點的下一個節點
"""
def GetNext(self, pNode):
if not pNode:
return None
# 如果給定節點存在右子樹,則下一個節點就是右子樹的最左葉子節點
if pNode.right:
temp = pNode.right
while temp.left:
temp = temp.left
return temp
if pNode.parent:
# 如果給定節點不存在右子樹,則找到第一個在它右邊的祖先節點
# 例如,給定節點是父節點的左子節點,則下一個節點就是父節點
current = pNode
parent = pNode.parent
# 如果給定節點是父節點的右子節點,則需要繼續往上找,找到第一個祖先節點,
# 使得該祖先節點的是其父節點的左子節點,則下一個節點就是該祖先節點的父節點(因為給定
# 節點是該祖先節點的父節點左邊最近的子節點)
while parent and current == parent.right:
current = parent
parent = parent.parent
return parent
# 給定節點已是最右節點,不存在下一個節點
return None
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。