java实现,已调试通过。
按照编程之美课本上给出的c语言写法,转化成了java语法。以前觉得层次的话都是用队列,看到这个题之后,才知道用递归的方法解也行,开阔了思路。
import java.util.Scanner;
class Tnodee{
int data;
Tnodee lchild;
Tnodee rchild;
Tnodee(int a)
{
data=a;
lchild=null;
rchild=null;
}
}
public class TraveseTreeByLevel{
static Tnodee root=null;
static Tnodee creatTree(Tnodee root)
{
Scanner in=new Scanner(System.in);
int a=in.nextInt();
if(a==0){
return null ;
}
else{
root=new Tnodee(a);
root.lchild=creatTree(root.lchild);
root.rchild=creatTree(root.rchild);
return root;
}
}
static void printInOrder(Tnodee root){
if(root==null)
return;
else{
System.out.println(root.data);
printInOrder(root.lchild);
printInOrder(root.rchild);
}
}
static int PrintNodeAtLevel(Tnodee root,int level){
if(root==null||level<0) return 0;
if(level==0){
System.out.print(root.data);
System.out.print(" ");
return 1;
}
return PrintNodeAtLevel(root.lchild,level-1)+PrintNodeAtLevel(root.rchild,level-1);
}
static void PrintNodeAll(Tnodee root){
for(int level=0;;level++){
if(PrintNodeAtLevel(root,level)==0)
break;
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Tnodee tree1=creatTree(root);
printInOrder(tree1);
PrintNodeAll(tree1);
}
}