java实现二叉树层序,前序及中序遍历。直接贴代码吧。。。
import java.util.LinkedList;
/**
* java实现二叉树遍历
* @author uiao
* @date 2018/2/27
*/
public class Order {
/*
* 层序遍历
* */
public void levelOrder(Node root) {
if (root == null){
return;
}
Node currentNode = null;
LinkedList<Node> queue = new LinkedList<Node>();
queue.offer(root); // 将根节点入队
while (!queue.isEmpty()){
currentNode = queue.poll(); // queue队列的队头元素出队
System.out.println(currentNode.value); // 打印当前节点的数据
if (currentNode.left != null){
queue.offer(currentNode.left);
}
if (currentNode.right != null){
queue.offer(currentNode.right);
}
}
}
/*
* 前序遍历
* */
public void preOrder(Node node){ // 第一个传进来节点的是根节点
if (node != null){
System.out.println(node.value);
this.preOrder(node.left); // 如果左节点不为空就会一直进行下去
this.preOrder(node.right);
}
}
/*
* 中序遍历
* */
public void midOrder(Node node){
if (node != null){
this.midOrder(node.left); // 当左节点为空时,也就是当前节点是最左。println将会第一次执行
System.out.println(node.value);
this.midOrder(node.right);
}
}
class Node{
public int value;
public Node left;
public Node right;
}
}