随机位数的四则运算
git代码地址:https://github.com/sabersana/try/blob/master/sizeyunsuan1.py
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。上篇内容:https://www.cnblogs.com/sabersana/p/10573558.html
随机位数的四则运算可以先给定一个大树(最大数字为8为数字的计算)
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 = [tree(random.randint(0, 3)) for j in range(15)] a0.left, a0.right = a1, a2 a1.left, a1.right = a3, a4 a2.left, a2.right = a5, a6 a3.left, a3.right = a7, a8 a4.left, a4.right = a9, a10 a5.left, a5.right = a11, a12 a6.left, a6.right = a13, a14
形状如图
0
1 2
3 4 5 6
7 8 9 10 11 12 13 14
这次需要控制0, 1, 2节点的运算符即可
a0.data = random.randint(0, 1) # 控制 01 节点的数值,使后序遍历变成逆波兰式 a1.data = random.randint(0, 1) a2.data = random.randint(0, 1)
偷懒直接在树中加入了是否为头结点的head变量,0否1是
class tree():
def __init__(self, data=None, left=None, right=None): self.data = data self.left = left self.right = right self.head = 0
a0.head = 1
然后进行一次树的遍历,除头节点外每个节点都有概率(0.5)成为叶子(最少两位数字的计算)
def shengchengshu(a): # 生成树 if a.left != None: p = random.uniform(0, 1) if p < 0.5 and a.head == 0: a.left = None a.right = None else: shengchengshu(a.left) shengchengshu(a.right)
运行结果如图

更多精彩