1、创建链表结构对象
public class Note {
public int date;
public Note dateleft;
public Note dateright;
public Note(int date,Note dateleft,Note dateright){
this.date = date;
this.dateleft = dateleft;
this.dateright = dateright;
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
public Note getDateleft() {
return dateleft;
}
public void setDateleft(Note dateleft) {
this.dateleft = dateleft;
}
public Note getDateright() {
return dateright;
}
public void setDateright(Note dateright) {
this.dateright = dateright;
}
}
2、遍历方法
public class demo {
public Note inti(){
Note h = new Note(8,null,null);
Note g = new Note(7,null,null);
Note f = new Note(6,null,h);
Note e = new Note(5,g,null);
Note d = new Note(4,null,null);
Note c = new Note(3,null,f);
Note b = new Note(2,d,e);
Note a = new Note(1,b,c);
return a;
}
public void printNote(Note n){
System.out.print(n.getDate());
}
/**
* 前序
* @param n
*/
public void firstTraversal(Note n){
printNote(n);
if(n.getDateleft()!=null){
firstTraversal(n.getDateleft());
}
if(n.getDateright()!=null){
firstTraversal(n.getDateright());
}
}
/**
* 中序
* @param n
*/
public void inderTraversal(Note n){
if(n.getDateleft()!=null){
inderTraversal(n.getDateleft());
}
printNote(n);
if(n.getDateright()!=null){
inderTraversal(n.getDateright());
}
}
/**
* 后序
* @param n
*/
public void endTraversal(Note n){
if(n.getDateleft()!=null){
endTraversal(n.getDateleft());
}
if(n.getDateright()!=null){
endTraversal(n.getDateright());
}
printNote(n);
}
/**
* 层序
* @param args
*/
public void levelIterator(Note n)
{
if(n == null)
{
return ;
}
LinkedList<Note> queue = new LinkedList<Note>();
Note current = null;
queue.offer(n);//将根节点入队
while(!queue.isEmpty())
{
current = queue.poll();//出队队头元素并访问
System.out.print(current.date);
if(current.dateleft != null)//如果当前节点的左节点不为空入队
{
queue.offer(current.dateleft);
}
if(current.dateright != null)//如果当前节点的右节点不为空,把右节点入队
{
queue.offer(current.dateright);
}
}
}
public static void main(String[] args) {
demo s = new demo();
Note n = s.inti();
System.out.println("前序");
s.firstTraversal(n);
System.out.println("");
System.out.println("中序");
s.inderTraversal(n);
System.out.println("");
System.out.println("后序");
s.endTraversal(n);
System.out.println("");
System.out.println("层序");
s.levelIterator(n);
}
}