树的层次遍历其实就是使用了队列的特性,从跟节点开始,把左右节点分别加入队列,出来时候,自然就是一层一层的打印出来的。
代码还是很简单的
public void levelOrder(Node root) {
LinkedList<Node> queue = new LinkedList();
queue.add(root);
while(queue.size() > 0){
Node node = queue.removeFirst();
System.out.print(node.getValue());
if(node.getLeft() != null){
queue.add(node.getLeft);
}
if(node.getRight != null){
queue.add(node.getRight);
}
}
}
层次遍历有些算法题会考,需要确定层次问题
public void levelOrder(Node root) {
LinkedList<Node> queue = new LinkedList();
queue.add(root);
while(queue.size() > 0){
int size = queue.size()
while(size > 0){
Node node = queue.removeFirst();
System.out.print(node.getValue());
if(node.getLeft() != null){
queue.add(node.getLeft);
}
if(node.getRight != null){
queue.add(node.getRight);
}
--size;
}
}
}
大while我们每次取出队列里的元素大小,这就是一层数量,然后小while中我们把相应数量的元素取出来,等到size为零了,我们就可以到下一层了
这里是剑指offer的一道题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
输入:{8,6,10,5,7,9,11} 输出:[[8],[6,10],[5,7,9,11]]