102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
题目链接
题解:
class Solution {
static class NL
{
TreeNode node;
int lever;
public NL(TreeNode node, int lever)
{
this.node = node;
this.lever = lever;
}
}
public List<List<Integer>> levelOrder(TreeNode root)
{
List<List<Integer>> ret = new ArrayList<>(); //外侧 List
if (root == null)
{
return ret;
}
Queue<NL> queue = new LinkedList<>();
queue.add(new NL(root, 0));
while (!queue.isEmpty())
{
NL nl = queue.remove();
TreeNode node = nl.node;
int le = nl.lever;
System.out.println(le);
System.out.println(node.val);
if (le == ret.size())
{
ret.add(new ArrayList<>());
}
List<Integer> innerList = ret.get(le);
innerList.add(node.val);
if (node.left != null)
{
queue.add(new NL(node.left, le + 1));
}
if (node.right != null)
{
queue.add(new NL(node.right, le + 1));
}
}
return ret;
}
}