擅长:python、mysql、java
<p>正如其他人所说,您的代码是为具有<code>lchild</code>和<code>rchild</code>成员的节点实例设计的,但是图中的树有一个具有3个子节点的节点,因此它不能表示为这样的节点</p>
<p>您需要不同的节点类定义:</p>
<pre><code>class Node:
def __init__(self, value, *children):
self.value = value
self.children = children
</code></pre>
<p>然后我将<code>count</code>定义为该类的<em>方法</em>,而不是独立函数:</p>
<pre><code>class Node
# ...
def count(self):
return sum(1 + child.count() for child in self.children)
</code></pre>
<p>运行示例:</p>
<pre><code># Create the tree as pictured in the question
root = Node(1,
Node(2,
Node(4),
Node(5,
Node(7),
Node(8)
),
Node(6)),
Node(3)
)
# Select the node with value 2 (at left of root) and call the `count` method:
print(root.children[0].count())
</code></pre>