思路很简单。通过队列,先将头结点放入队列,再遍历每个节点的左节点和右节点。
import java.util.ArrayList;
import java.util.LinkedList;
/**
* 遍历层次二叉树
*
* @author chenjunxu
*
*/
public class Main {
public static void main(String[] args) {
// 队列
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
// 模拟数据
TreeNode root = new TreeNode("1");
TreeNode root2 = new TreeNode("2");
root.leftTree = root2;
// 将头节点加入队列
queue.add(root);
TreeNode temp = null;
// 收集结果
ArrayList<String> resultArray = new ArrayList<String>();
// 通过while循环,将队列内容全部取出
while (!queue.isEmpty()) {
// 取出队列第一个节点
temp = queue.poll();
// 该节点若有左子树,则添加至队列尾部
if (temp.leftTree != null) {
queue.add(temp.leftTree);
}
// 该节点若有右子树,则添加至队列尾部
if (temp.rightTree != null) {
queue.add(temp.rightTree);
}
// 保存结果
resultArray.add(temp.val);
}
// 输出结果
for (String str : resultArray) {
System.out.println(str);
}
}
}
/**
* 二叉树节点
*
* @author chenjunxu
*
*/
class TreeNode {
public String val = "root";
public TreeNode leftTree = null;
public TreeNode rightTree = null;
public TreeNode(String val) {
this.val = val;
}
}