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;
}
我正在我的 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;
}