二叉樹的下乙個節點

2021-08-07 02:17:33 字數 1606 閱讀 2473

問題

題目給出的預設**為:

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

getnext(self, pnode):10#

write code here

這裡開始我就沒有理解題目的意思,認為題目應該給出兩個引數,乙個二叉樹,乙個結點。而且定義中的next也模糊。後來發現next就是指的parent,就是父結點。

思路:題目已給出了當前結點,我們要做的是通過給出的當前結點找到他中序遍歷的下乙個結點,由於定義中每乙個結點都包含其左右結點以及父結點的指標,所以我們就可以通過當前結點找出其他結點的資訊。

首先知道中序遍歷的規則是:左根右,然後作圖

結合圖,我們可發現分成兩大類:1、有右子樹的,那麼下個結點就是右子樹最左邊的點;(eg:d,b,e,a,c,g) 2、沒有右子樹的,也可以分成兩類,a)是父節點左孩子(eg:n,i,l) ,那麼父節點就是下乙個節點 ; b)是父節點的右孩子(eg:h,j,k,m)找他的父節點的父節點的父節點...直到當前結點是其父節點的左孩子位置。如果沒有eg:m,那麼他就是尾節點。

python**如下

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

getnext(self, pnode):10#

write code here

11if

notpnode:

12return

pnode

13if pnode.right:#

右子樹不為空

14 pnode =pnode.right

15while

pnode.left:

16 pnode =pnode.left

17return

pnode

18while pnode.next:#

非根結點

19if pnode ==pnode.next.left:

20return

pnode.next

21 pnode =pnode.next

22return none

二叉樹的下乙個節點

coding utf 8 class treelinknode def init self,x self.val x self.left none self.right none self.next none 1 該節點有左子樹,說明左邊已經遍歷過,該節點作為根節點,下一步應該填右子樹,如果該節點有...

二叉樹的下乙個節點

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

二叉樹的下乙個節點

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