题意:层序打印二叉树
思路:维护一个队列,存储二叉树从上至下、从左至右的打印顺序,先进先出。
代码:
package MianShiTi_23;
import java.util.LinkedList;
import java.util.Queue;
import javax.swing.text.AbstractDocument.LeafElement;
public class MianShiTi_23 {
public static class binaryTree {
int value;
binaryTree leftChild;
binaryTree rightChild;
}
public static void layerTraversal(binaryTree node) {
if(node == null){return;}
//linkedlist实现了queue。
Queue<binaryTree> queue = new LinkedList<>();
queue.add(node);
while (queue.size() != 0) {
binaryTree pnode = queue.poll();
System.out.print(pnode.value+"->");
if(pnode.leftChild != null){
queue.add(pnode.leftChild);
}
if(pnode.rightChild != null){
queue.add(pnode.rightChild);
}
}
}
public static void main(String[] args) {
binaryTree node = new binaryTree();
node.value = 8;
node.leftChild = new binaryTree();
node.leftChild.value = 6;
node.rightChild = new binaryTree();
node.rightChild.value = 10;
node.leftChild.leftChild = new binaryTree();
node.leftChild.leftChild.value = 5;
node.leftChild.rightChild = new binaryTree();
node.leftChild.rightChild.value = 7;
node.rightChild.leftChild = new binaryTree();
node.rightChild.leftChild.value = 9;
node.rightChild.rightChild = new binaryTree();
node.rightChild.rightChild.value = 11;
new MianShiTi_23().layerTraversal(node);
}
}