二叉树T的遍历是访问树中的每一个结点。在访问结点的时候,可以进行结点运算或者修改结点内容等一些相应处理。 根据二叉树的定义,只要二叉树T不为空,则T形式如下:
根据二叉树的结构,二叉树的按层遍历为:
按照树的层,每一层从左到右依次输出
例如下图
按层遍历输出结果为{8,8,3,7,6,5,4}
下面给出按层遍历的实现代码
利用队列的先进先出的特性进行遍历:
step1:先将头节点放入队列中,再以此放入左孩子、右孩子。
step2:依次读取队列的第一个结点,只要结点存在孩子结点,将其孩子按照顺序放入队列。
public class public class LeverOrderTree {
public void solve(TreeNode root){
//如果根节点为null,则什么也不返回
if(root == null){
return;
}
//新的链表初始化,当队列使用
//设置链表的第一项为first;
LinkedList
queue = new LinkedList
();
TreeNode first = null;
//新的链表为空,将树的根节点放入队列中
if(root != null){
queue.offer(root);
}
/*第一层取得树的根节点,
第二层:左孩子,右孩子,
第三层:左孩子的左孩子,右孩子;右孩子的左孩子,右孩子
以此循环,一层一层遍历*/
while(!queue.isEmpty()){
first = queue.poll();
System.out.print(first.val + "-->");
if(first.left != null){
queue.offer(first.left);
}
if(first.right != null){
queue.offer(first.right);
}
}