从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
代码:
/**
*Definitionforabinarytreenode.
*publicclassTreeNode{
*intval;
*TreeNodeleft;
*TreeNoderight;
*TreeNode(intx){val=x;}
*}
*/
classSolution{
publicList<List<Integer>>levelOrder(TreeNoderoot){
List<List<Integer>>result=newArrayList<List<Integer>>();
List<Integer>list=newArrayList<Integer>();
Deque<TreeNode>deque=newLinkedList<>();
if(root==null)returnresult;
TreeNodeflag=root;
deque.offer(root);
while(!deque.isEmpty())
{
TreeNodep=deque.poll();
list.add(p.val);
if(p.left!=null)
{
deque.offer(p.left);
}
if(p.right!=null)
{
deque.offer(p.right);
}
if(flag==p)
{
flag=deque.peekLast();
result.add(list);
list=newArrayList<>();
}
}
returnresult;
}
}