我应该实现一个递归方法来计算左子树节点的数量。我的代码到目前为止是:计算树中的左子节点
private int countLeftNodes(IntTreeNode node){
int c = 0;
if (node != null){
c = 1 + countLeftNodes(node.left);
countLeftNodes(node.right);
}
return c;
}
它返回一个比它应该小得多的数字。我有一种感觉,我的遍历是关闭的,因为它似乎只计算最左边的子节点,然后终止。当我在一个大小为16的IntTree上调用这个方法时,我应该得到8个左子节点,7个右子节点和一个根节点,但是我得到4个左子节点。
您没有添加右侧子节点的左侧节点。 – Zimbabao 2011-03-21 18:01:52