鱼C论坛

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

用Python做表达式树

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

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

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

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

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

  4. # 木の表示
  5. def show(node, lside = '', fill = ''):
  6.   _lv_ = '[' + str(node[LABEL]) + ']'                    # ノードのラベル文字列
  7.   if node[RIGHT] == None:  # 右ノードが無い
  8.     print(lside + _lv_)
  9.     if node[LEFT] != None: # 左ノードがある(下に表示が必要)
  10.       print(fill + ' |')
  11.       show(node[LEFT], fill, fill)
  12.   else:                    # 右ノードがある場合
  13.     _ln_ = lside + (_lv_ + '-' * WS)[:WS] # 左側のノード表示文字列
  14.     if node[LEFT] == None: # 左ノードが無い
  15.       show(node[RIGHT], _ln_, fill + ' ' * WS)
  16.     else:                  # 左ノードがある(下に表示が必要)
  17.       show(node[RIGHT], _ln_, fill + ' |' + ' ' * (WS - 2))
  18.       print(fill + ' |')
  19.       show(node[LEFT], fill, fill)
  20. 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]]]]
  21. show(standard)

  22. def mktree(h):
  23.     if h == 0:  # 高さが0ならば葉を生やす
  24.         return ['葉', None, None]
  25.     else:         # h - 1 の木を作り、枝をつなぐ
  26.         return ['枝', mktree(h - 1), mktree(h - 1)]

  27. tree = mktree(3)  # 高さ h = 3 の木を茂らせる
  28. print(tree)
  29. show(tree)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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