二叉樹的建立與遍歷
#定義節點
class
treenode
(object):
def__init__
(self, value=
none):
self.data = value
self.leftchild =
none
self.rightchild =
none
#前序遍歷
defpreorder
(t):
if t.data ==
none
:return
print
(t.data, end=
" ")
preorder(t.leftchild)
preorder(t.rightchild)
#中序遍歷
definorder
(t):
if t.data ==
none
:return
inorder(t.leftchild)
print
(t.data, end=
' ')
inorder(t.rightchild)
#後序遍歷
defpostorder
(t):
if t.data ==
none
:return
postorder(t.leftchild)
postorder(t.rightchild)
print
(t.data, end=
' ')
#建立二叉樹,傳入樹和列表
defcreattree
(t, l)
: value = l[0]
l.pop(0)
if value ==
'#':
t =none
else
: t.data = value
t.leftchild = treenode(
)#將左孩子定義為一棵樹
t.rightchild = treenode(
)#將右孩子定義為一棵樹
print
(value, end=
' ')
creattree(t.leftchild, l)
creattree(t.rightchild, l)
return
l =[
'a',
'b',
'c',
'#',
'#',
'd',
'e',
'#',
'g',
'#',
'#',
'f',
'#',
'#',
'#']
mytree = treenode(
)creattree(mytree, l)
print()
preorder(mytree)
print()
inorder(mytree)
print()
postorder(mytree)
# print(i)
二叉樹的建立與遍歷 二叉樹遍歷模板)
初學二叉樹,感覺之前鍊錶掌握不熟練導致接受有點難,現在做一些總結。本題其實就是根據給出的前序遍歷 包括空子樹 寫出相應的前序 中序和後序遍歷。廢話不多說,先看看題目 description 下面給出了教材中演算法6.4所示的演算法。status createbitree bitree t retur...
二叉樹建立與遍歷
二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱為 左子樹 和 右子樹 二叉樹的每個節點最多只能右兩棵子樹,子樹有左右之分,次序不能顛倒。除了葉結點外每乙個結點都有左右子葉且葉子結點都處在最底層的二叉樹。假設二叉樹的高度為k,除第k層外,其他各層的節點數都達到最大個數。也就是第一層到第k 1層為...
二叉樹建立與遍歷
節點定義 class binnode binnode char data2 data data2 binnode char data2,binnode parent2 data data2 void insertasleft char data void insertasright char dat...