Thunderbee 发表于 2022-5-18 18:12:02

用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]
查看完整版本: 用Python做表达式树