层序遍历就是按二叉树从上到下,从左到右依次打印每个结点中存储的数据。
数据结构:队列,每次访问队列头部节点,将其出队列,并将其左右子节点分别入队列。
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
class Node {
int data;
Node left=null;
Node right=null;
public Node(int data) {
this.data = data;
}
}
public class LevelOrder {
public ArrayList<Integer> print(Node root){
ArrayList<Integer> list = new ArrayList<Integer>();//存放结果
Queue<Node> q = new LinkedList<Node>();//辅助队列
if(root!=null)
//根结点入队
q.offer(root);
//队列不为空,执行循环
while(!q.isEmpty()){
Node n=q.poll();
list.add(n.data);//将队列元素输出
if(n.left!=null)
q.offer(n.left);
if(n.right!=null)
q.offer(n.right);
}
return list;
}
}