【发布时间】:2015-05-14 04:14:37
【问题描述】:
我正在尝试编写一个计算不同类型节点的递归函数:
- 具有零子节点的节点数
- 一个孩子的节点数
-
有两个孩子的节点数
def _node_counts_aux(self,node): zero = 0 one = 0 two = 0 if node is not None: #print("==========") #print(node) #print(node._left) #print(node._right) #print() # Two children case if node._left is not None and node._right is not None: #print("Two") two = self._node_counts_aux(node._left)[2] + self._node_counts_aux(node._right)[2] + 1 # One child case elif node._left is None and node._right is not None: #print("One") one = self._node_counts_aux(node._right)[1] + 1 elif node._right is None and node._left is not None: #print("One") one = self._node_counts_aux(node._left)[1] + 1 # Zero children case elif node._left is None and node._right is None: #print("Zero") zero = self._node_counts_aux(node._left)[0] + self._node_counts_aux(node._right)[0] + 1 return zero, one, two
我相信if 语句结构涵盖了所有情况,但是当我使用这个 bst 运行我的程序时,我得到了这个结果:
Zero children: 0
One child: 0
Two children: 4
我使用 print 语句测试了我的程序,并确定我的递归调用存在问题。然而,问题是,一切(据我所知)都是正确的。有人可以指出我的错误吗?提前致谢
【问题讨论】:
-
_node_counts_aux()在哪里? -
@avim 发布的代码是 _node_counts_aux()
-
请编辑以便我们看到
标签: python-3.x recursion binary-tree