希望有人能提供帮助,我不是程序员,但一直对探索Fibonacci序列感兴趣,而且它是递归树...
我创建了一个Binary Tree类,以及一个关联的TreeNode类,并希望生成一个由以下内容创建的递归调用的二叉树:
对于给定的n值,f(n)= f(n-1)+ f(n-2)
我想将它添加为Binary Tree类的InsertFibonacci方法,替换标准的Insert方法:
def insertNode(self, root, inputData):
if root == None:
return self.addNode(inputData)
else:
if inputData <= root.nodeData:
root.left = self.insertNode(root.left, inputData)
else:
root.right = self.insertNode(root.right, inputData)
return root
我会在Fib功能中添加一些装饰器吗?
# Fib function
def f(n):
def helper(n):
left = f(n-1)
right = f(n-2)
return left,right
if n == 0:
return 0
elif n == 1:
return 1
else:
left, right = helper(n)
return left + right
答案 0 :(得分:3)
这是我能想到的最简单的解决方案:
class FibTree(object):
def __init__(self, n):
self.n = n
if n < 2:
self.value = n
else:
self.left = FibTree(n - 1)
self.right = FibTree(n - 2)
self.value = self.left.value + self.right.value
答案 1 :(得分:1)
这是一种方式:
def insertFibonacci(self, n):
current = self.addNode(n)
if n > 1:
current.left = self.insertFibonacci(n-1)
current.right = self.insertFibonacci(n-2)
# if you want the fibonacci numbers instead of the calls:
# current.value = current.left.value + current.right.value
return current
假设为正n
。
应该返回斐波纳契调用树的根。
请注意,这不一定是同一种二叉树;它不会满足二叉搜索树的排序不变量。我假设您只是想使用现有结构以方便使用。