Java - 查找LinkedBinaryTree中的子项数

时间:2017-10-26 18:06:10

标签: java binary-tree nodes children

我正在使用LinkedBinaryTree类中的一个方法来计算树中的子项数。我的代码如下,但是当我在我的驱动程序中运行它时,我会进入一个无限循环。

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;
}

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

children = 1 + children(node);

任何人都知道如何帮助我纠正我的代码?我用逻辑忽略了什么?感谢帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你应该传递node-&gt;在递归调用方法时,left或node-&gt; 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;

}