<p>问题出现在<code>make_daughters</code>的奇数情况下:添加一个<code>None</code>作为第三个参数,然后创建一个新的<code>Node</code>,并尝试在<code>None</code>上运行<code>sqrt</code>方法。你知道吗</p>
<p>修改了以下部分以解决此问题:</p>
<pre><code>def print_all_chains(node,chain=[]):
if node.branch1 is None:
chain.append(node.number)
print '{0}: {1}'.format(node.satisfied, chain)
else:
if node.branch1: # print only if it's a valid branch
print_all_chains(node.branch1, chain[:] + [node.number])
if node.branch2: # print only if it's a valid branch
print_all_chains(node.branch2, chain[:] + [node.number])
if node.branch3: # print only if it's a valid branch
print_all_chains(node.branch3, chain[:] + [node.number])
def make_daughters(number):
if number % 2 == 0: #even
daughters = [number // 2, number * 2, number + 15]
else:
daughters = [number + 1, number * 4] # don't send None
return daughters
def build_tree(node, maxDepth):
if not node.satisfied and node.depth<maxDepth:
daughters = make_daughters(node.number)
node.branch1 = Node(daughters[0], node)
build_tree(node.branch1,maxDepth)
node.branch2 = Node(daughters[1], node)
build_tree(node.branch2,maxDepth)
if len(daughters) > 2: # make sure you have the third element
node.branch3 = Node(daughters[2], node)
build_tree(node.branch3, maxDepth)
</code></pre>