二叉樹的下乙個節點

2021-08-22 04:48:39 字數 1440 閱讀 8124

# -*- coding:utf-8 -*-

# class treelinknode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

# self.next = none

(1)該節點有左子樹,說明左邊已經遍歷過,該節點作為根節點,下一步應該填右子樹,如果該節點有右子樹,下乙個節點出現在右子樹(出現在右子樹的最早被遍歷的節點——最左節點),進入到該右子樹,尋找最左節點。

if pnode.right!=none:

pnode=pnode.right

while pnode.left!=none:

pnode=pnode.left

return pnode

(2)如果該節點沒有右子樹,下乙個節點可能出現把該節點作為左子樹的父節點,也就是說,如果乙個節點沒有右子樹,並且它還是它父節點的左子節點,則下乙個節點就是其父節點

return pnode.next
(3)如果乙個節點沒有右子樹,並且它還是它父節點的右子節點,需要沿著指向父節點的指標向上遍歷,需要找到乙個祖節點為其父節點的左子節點,則下乙個節點就是祖節點的父節點。

if pnode.next!=none and pnode.next.right==pnode:

while pnode.next!=none and pnode.next.left!=pnode:

pnode=pnode.next

return pnode.next

最終程式:

class solution:

def getnext(self, pnode):

# write code here

if not pnode:

return

#如果該節點有右子樹,那麼下乙個節點就是它右子樹中的最左節點

elif pnode.right!=none:

pnode=pnode.right

while pnode.left!=none:

pnode=pnode.left

return pnode

#如果乙個節點沒有右子樹,,並且它還是它父節點的右子節點

elif pnode.next!=none and pnode.next.right==pnode:

while pnode.next!=none and pnode.next.left!=pnode:

pnode=pnode.next

return pnode.next

#如果乙個節點是最後乙個節點

else:

return pnode.next

二叉樹的下乙個節點

問題 題目給出的預設 為 1 coding utf 8 2 class treelinknode 3 def init self,x 4 self.val x5 self.left none6 self.right none7 self.next none 8class solution 9def ...

二叉樹的下乙個節點

題目描述 給定一棵二叉樹和其中的乙個節點,如何找出中序遍歷序列的下乙個節點?樹中的節點除了有兩個分別別指向左右子節點的指標,還有乙個指向父節點的指標 例如 這棵樹的中序遍歷是 d,b,h,e,i,a,f,c,g 解題思路 3 當結點的右子樹為空,且是它父節點的左子節點時,它的下乙個節點就是它的父節點...

二叉樹的下乙個節點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。如下圖所示 第二種情況 如果是它父節點的右子節點,我麼可以沿著只想父節點的指標一直向上遍歷,找到乙個是它父節點的左子節點,如果這樣節點存在,那麼它的下乙個節點節點就是...