给定(M,F) - 对于某个过程的每一步,元组都成为 (M + F,F)或(M,M + F)。因此,从(1,1)开始,以下是可能的:
If not root,
left_ child = (parent0 + parent1, parent1)
and right_child = (parent0, parent0 + parent1)
其中parent0指父元组的第一个元素和parent1秒。
我完全不确定如何在给出M和F的任何起始值的n个步骤之后创建一个遵循上述算法来创建树的树。
当我决定在线搜索时,我得到了以下内容:
class Tree(object):
def __init__(self):
self.left = None
self.right = None
self.data = None
root = Tree()
root.data = "root"
root.left = Tree()
root.left.data = "left"
root.right = Tree()
root.right.data = "right"
或
class Tree:
def __init__(self, cargo, left=None, right=None):
self.cargo = cargo
self.left = left
self.right = right
def __str__(self):
return str(self.cargo)
tree = Tree(1, Tree(2), Tree(3))
我无法想出使用上面的代码构建我想要的状态空间树的方法。也就是说,当给定输入为(M,F)和n时,如何实现一个树,该树自动创建带有计算值的子树,n是过程中的步数(即树中的级别数)。 / p>
答案 0 :(得分:1)
你需要的只是一个树,它包含两个值而不是一个,加上一些自动生成子树的属性:
class SpaceTree:
def __init__(self, M=1, F=1):
self.M= M
self.F= F
self._left= None
self._right= None
@property
def left(self):
if self._left is None:
self._left= SpaceTree(self.M+self.F, self.F)
return self._left
@property
def right(self):
if self._right is None:
self._right= SpaceTree(self.M, self.F+self.M)
return self._right
def __repr__(self):
return 'SpaceTree({}, {})'.format(self.M, self.F)
现在您可以创建一个树并根据需要遍历它:
>>> SpaceTree()
SpaceTree(1, 1)
>>> SpaceTree().left
SpaceTree(2, 1)
>>> SpaceTree().left.right
SpaceTree(2, 3)