我想要在树中的某个级别显示所有节点:
被称为: allNodesAtACertainLevel(0, *whatever level you want*, root);
这产生了正确的答案.
private void allNodesAtACertainLevel(int count, int level, Node n){
count += 1;
if(count <= level){
if(n.left != null) allNodesAtACertainLevel(count, level, n.left);
if(n.right != null) allNodesAtACertainLevel(count, level, n.right);
}
else{
System.out.print(n.value);
}
}
Run Code Online (Sandbox Code Playgroud)
事实并非如此.
private void allNodesAtACertainLevel(int count, int level, Node n){
if(count < level){
if(n.left != null) allNodesAtACertainLevel(count++, level, n.left);
if(n.right != null) allNodesAtACertainLevel(count++, level, n.right);
}
else{
System.out.print(n.value);
}
}
Run Code Online (Sandbox Code Playgroud)
有人能解释为什么吗?
第二个示例递增count两次,第一个示例count仅递增一次.在第二个示例调用count之前调用第一个增量,在调用之后allNodesAtACertainLevel调用allNodesAtACertainLevel增量.count
当适当替换第二个例子时,任何这些都应该产生正确的结果:
count++;
if(n.left != null) allNodesAtACertainLevel(count, level, n.left);
if(n.right != null) allNodesAtACertainLevel(count, level, n.right);
Run Code Online (Sandbox Code Playgroud)
-
count += 1;
if(n.left != null) allNodesAtACertainLevel(count, level, n.left);
if(n.right != null) allNodesAtACertainLevel(count, level, n.right);
Run Code Online (Sandbox Code Playgroud)
-
if(n.left != null) allNodesAtACertainLevel(count+1, level, n.left);
if(n.right != null) allNodesAtACertainLevel(count+1, level, n.right);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |