一、题目分析
题目:二叉树按层遍历并收集节点 遍历二叉树的节点并将每一层的节点收集起来。
定义一个大链表,泛型还是链表,用来存放每一层的节点。 定义一个工具queue,将头节点head放入queue,然后弹出queue存放到每一层的链表中,如果它的左右节点不为空,也存放到queue中去,这样queue中存放的就是每一次的节点,(将头节点放入queue,弹出元素到新链表,再放入左右节点,再弹出到新链表,依次类推收集到每一层的节点链表)
二、代码实现
package com.lsh.day08;
import java.util.LinkedList;
/**
* @author :LiuShihao
* @date :Created in 2022/2/10 1:44 下午
* @desc :算法题目: 二叉树按层遍历并收集节点
* BinaryTreeLevelOrderTraversal
*/
public class Code06_BinaryTreeLevelOrderTraversal {
public static class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
/**
*
* @param root
* @return
*/
public LinkedList levelOrderBottom(TreeNode root){
LinkedList answer = new LinkedList();
if (root == null){
return answer;
}
LinkedList queue = new LinkedList();
//新建LinkedList 将头节点放入
queue.add(root);
//如果queue 链表不为空
while (!queue.isEmpty()){
int size = queue.size();
LinkedList curAns = new LinkedList();
for (int i = 0; i |