3 2 列印二叉樹的邊界節點 I

2021-10-22 12:02:37 字數 2031 閱讀 3005

給定一棵二叉樹的頭節點 head,按照如下兩種標準分別實現二叉樹邊界節點的逆時針列印。

標準:

例如,如圖 3-2 所示的樹。

按標準1的列印結果為:

1,2,4,7,11,13,14,15,16,12,10,6,3
class

node

:def

__init___

(self, data)

: self.right =

none

self.left =

none

self.val = data

defprintedge

(head: node)

:if head is

none

:return

# 獲取樹的深度

height = get_height(head,0)

edgemap =[[

none

,none

]* height]

# 設定左右邊界的陣列

setedgemap(h,

0, edgemap)

# 列印左邊界節點

for i in

range

(len

(edgemap)):

if edgemap[i][0

]!= edgemap[i][1

]:print

(edgemap[i][0

].value,

" ")

# 列印不在左右邊界的葉子節點

printleafnotinmap(head,

0, edgemap)

# 列印右邊界節點

for i in

range

(len

(edgemap)-1

,-1,

-1):

if edgemap[i][0

]!= edgemap[i][1

]:print

(edgemap[i][1

].value,

" ")

print

("\n"

)def

setedgemap

(h, l, edgemap)

:if h is

none

:return

none

edgemap[l][0

]= h if edgemap[0]

isnone

else edgemap[0]

edgemap[l][1

]= h

setedgemap(h.left, l+

1, edgemap)

setedgemap(h.right, l+

1, edgemap)

defget_height

(head, l)

:if h is

none

:return l

return

max(get_height.left, l+1)

, get_height(head.right, l+1)

)def

printleafnotinmap

(head, l, m)

:if h is

none

:return

if h.left is

none

and h.right is

none

and h != m[l][0

]and h!=m[l][0

]:print

(h.value,

" ")

printleafnotinmap(h.left, l+

1, m)

printleafnotinmap(h.right, l+

1, m)

3 1 列印二叉樹邊界節點 II

給定一棵二叉樹的頭節點 head,按照如下兩種標準分別實現二叉樹邊界節點的逆時針列印。標準 例如,如圖 3 2 所示的樹。按標準的列印結果為 1,2,4,7,13,14,15,16,10,6,3class node def init self,data self.value data self.ri...

列印二叉樹邊界節點

class treenode def init self,val,left none right none self.val val self.left left self.right right defis leaf self return self.left is none and self.r...

二叉樹問題 列印二叉樹的邊界節點

問題 給定一棵二叉樹的頭節點,按照如下兩種標準分別實現二叉樹邊界節點的逆時針列印。標準一 1.頭節點為邊界節點 2.葉節點為邊界節點 3.如果節點在其所在層中的最左邊或最右邊,那麼也是邊界節點標準二 1.頭節點為邊界節點 2.葉節點為邊界節點 3.樹左邊界延伸下去的路徑為邊界節點 4.樹右邊界延伸下...