Java - 在 LinkedBinaryTree 中查找 children 的数量

Java - Find number of children in a LinkedBinaryTree

我正在我的 LinkedBinaryTree class 中研究一种方法,它可以计算树中 children 的数量。我的代码在下面,但是当我 运行 它在我的驱动程序中时,我进入了一个无限循环。

public int children(BinaryTreeNode<T> node) {
    int children = 0;
    if(node.getLeft() != null){
        children = 1 + children(node);
    }
    else if(node.getRight() != null){
        children = children + 1 + children(node);

    }
    return children;
}

特别是这一行导致了 Whosebug 错误,我无法超越它:

children = 1 + children(node);

有人知道如何帮助我更正我的代码吗?我的逻辑忽略了什么?感谢您的帮助。

public int children(BinaryTreeNode<T> node) {
    if (node == null)
        return 0;
    return 1 + children(node.left()) + children(node.right());
}

在递归调用该方法时,您应该传递node->left 或node->right。更正后的代码:

public int children(BinaryTreeNode<T> node) {
int children = 0;
if(node.getLeft() != null){
    children = 1 + children(node.getLeft());
}
else if(node.getRight() != null){
    children = children + 1 + children(node.getRight());

}
return children;

}