package practice;
import java.util.ArrayDeque;
import java.util.Queue;
public class ListTree {
public static class Node{
int value;
Node left;
Node right;
public Node(int value){
this.value= value;
}
}
public static void preFind(Node node){
if(node==null){
return;
}
System.out.println(node.value+" ");
preFind(node.left);
preFind(node.right);
}
public static void midFind(Node node){
if(node==null){
return;
}
midFind(node.left);
System.out.println(node.value+" ");
midFind(node.right);
}
public static void afterFind(Node node){
if(node==null){
return;
}
afterFind(node.left);
afterFind(node.right);
System.out.println(node.value+" ");
}
/*
* 层序遍历
*/
public static void findByCeng(Node node){
Queue<Node> que= new ArrayDeque<Node>();
que.add(node);
Node last=node;
Node nextLast=node;
while(que.peek()!=null){
Node queNode = que.poll();
System.out.print(queNode.value);
if(queNode.left!=null){
que.add(queNode.left);
nextLast=queNode.left;
}
if(queNode.right!=null){
que.add(queNode.right);
nextLast=queNode.right;
}
if(last==queNode){
//System.out.println(last.value);
System.out.println();
last=nextLast;
}
}
}
public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);
Node node6 = new Node(6);
Node node7 = new Node(7);
node1.left=node2;
node1.right=node3;
node2.left=node4;
node2.right=node5;
node3.left=node6;
node3.right=node7;
//preFind(node1);//先序
//midFind(node1);//中序
//afterFind(node1);//后序
findByCeng(node1);
}
}