鱼C论坛

 找回密码
 立即注册
查看: 1202|回复: 0

用Python做表达式树

[复制链接]
发表于 2022-5-18 18:12:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
怎么用Python做一个高为h的满二叉树
# 二分木のノードでデータ構造を配列で実現

LABEL, LEFT, RIGHT = 0, 1, 2 # 配列上の位置の定数設定
WS = 10

# 木の表示
def show(node, lside = '', fill = ''):
  _lv_ = '[' + str(node[LABEL]) + ']'                    # ノードのラベル文字列
  if node[RIGHT] == None:  # 右ノードが無い
    print(lside + _lv_)
    if node[LEFT] != None: # 左ノードがある(下に表示が必要)
      print(fill + ' |')
      show(node[LEFT], fill, fill)
  else:                    # 右ノードがある場合
    _ln_ = lside + (_lv_ + '-' * WS)[:WS] # 左側のノード表示文字列
    if node[LEFT] == None: # 左ノードが無い
      show(node[RIGHT], _ln_, fill + ' ' * WS)
    else:                  # 左ノードがある(下に表示が必要)
      show(node[RIGHT], _ln_, fill + ' |' + ' ' * (WS - 2))
      print(fill + ' |')
      show(node[LEFT], fill, fill)
standard = [1,[2,[3,[4, None, None], [5, None, None]],[6,[7, None, None], [8, None, None]]],[9,[10,[11, None, None], [12, None, None]],[13,[14, None, None], [15, None, None]]]]
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表