用Python做表达式树
怎么用Python做一个高为h的满二叉树# 二分木のノードでデータ構造を配列で実現
LABEL, LEFT, RIGHT = 0, 1, 2 # 配列上の位置の定数設定
WS = 10
# 木の表示
def show(node, lside = '', fill = ''):
_lv_ = '[' + str(node) + ']' # ノードのラベル文字列
if node == None:# 右ノードが無い
print(lside + _lv_)
if node != None: # 左ノードがある(下に表示が必要)
print(fill + ' |')
show(node, fill, fill)
else: # 右ノードがある場合
_ln_ = lside + (_lv_ + '-' * WS)[:WS] # 左側のノード表示文字列
if node == None: # 左ノードが無い
show(node, _ln_, fill + ' ' * WS)
else: # 左ノードがある(下に表示が必要)
show(node, _ln_, fill + ' |' + ' ' * (WS - 2))
print(fill + ' |')
show(node, fill, fill)
standard = , ],, ]],, ],, ]]]
show(standard)
def mktree(h):
if h == 0:# 高さが0ならば葉を生やす
return ['葉', None, None]
else: # h - 1 の木を作り、枝をつなぐ
return ['枝', mktree(h - 1), mktree(h - 1)]
tree = mktree(3)# 高さ h = 3 の木を茂らせる
print(tree)
show(tree)
页:
[1]