Java 在二叉树上打印分支
如何计算分支数,在本例中,分支数为偶数整数。这是我到目前为止所拥有的。它似乎适用于几个案例Java 在二叉树上打印分支,java,recursion,data-structures,binary-tree,Java,Recursion,Data Structures,Binary Tree,如何计算分支数,在本例中,分支数为偶数整数。这是我到目前为止所拥有的。它似乎适用于几个案例 public int evenBranches() { return evenBranches(overallRoot); } private int evenBranches(IntTreeNode root) { if (root == null) { return 0; } int val = 0; if (root.left != nul
public int evenBranches() {
return evenBranches(overallRoot);
}
private int evenBranches(IntTreeNode root) {
if (root == null) {
return 0;
}
int val = 0;
if (root.left != null) {
val += evenBranches(root.left);
} else if (root.right != null) {
val += evenBranches(root.right);
}
if (root.data % 2 == 0) {
return val + 1;
} else {
return val;
}
}
检查右分支中的引用时,可能需要删除else条件。否则它将只检查一侧。例如:
private int evenBranches(IntTreeNode root) {
if (root == null) {
return 0;
}
int val = 0;
if (root.left != null) {
val += evenBranches(root.left);
}
if (root.right != null) {
val += evenBranches(root.right);
}
if (root.data % 2 == 0) {
return val + 1;
} else {
return val;
}
}
您可以如下修改evenBranchs()方法:我认为它将覆盖所有边缘情况,如果剩下任何测试情况,请告诉我,我会修复它
public int evenBranches() {
return evenBranches(overallRoot, 0);
}
private int evenBranches(IntTreeNode root, int count) {
if(root == null || (root.left == null && root.right == null)) {
return count;
}
if(root.data % 2 == 0) {
count++;
}
count += evenBranches(root.left, count);
count += evenBranches(root.right, count);
return count;
}
通过使用全局变量并在树上应用BFS(广度优先搜索),可以很好地获得所需的结果,方法如下:
int evencount = 0; // global-var.
public int evenBranches() {
evenBranches(overallRoot);
return evencount;
}
private void evenBranches(IntTreeNode root) {
if(!root) return;
if( (root.left || root.right) && (root.data % 2 == 0)){
evencount++;
}
evenBranches(root.left);
evenBranches(root.right);
}
我不明白题目是什么,“打印分支”?“计算“当然?”这似乎适用于几个案例。“那个么,哪些案例,我假设你们已经找到了一个它不适用的案例,那个就是呢?”提示:这是一个学习单元测试的好机会。甚至当您不使用JUnit时,您可能仍然值得考虑编写小部分测试代码。您知道:就像生成具有已知布局的专用树,然后在其上运行代码并检查返回的数字。从小示例开始,当出现问题时,可以在调试器中运行该测试。这就是你系统地解决这些问题的方法。此外:请查看帮助中心,了解问题中的“缺失部分”。