二叉树的按层遍历其实就是宽度优先遍历,使用队列,比较简单,直接上代码
package com.harrison.class07;
import java.util.LinkedList;
import java.util.Queue;
public class Code03_LevelTraversalBT {
public static class Node{
public int value;
public Node left;
public Node right;
public Node(int v) {
value=v;
}
}
public static void level(Node head) {
if(head==null) {
return ;
}
Queue<Node> queue=new LinkedList<>();
queue.add(head);
while(!queue.isEmpty()) {
Node cur=queue.poll();
System.out.print(cur.value+" ");
if(cur.left!=null) {
queue.add(cur.left);
}
if(cur.right!=null) {
queue.add(cur.right);
}
}
}
public static void main(String[] args) {
Node head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.left.left = new Node(4);
head.left.right = new Node(5);
head.right.left = new Node(6);
head.right.right = new Node(7);
level(head);
System.out.println("\n========");
}
}