从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回:
[3,9,20,15,7]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
用一个数列来完成层次遍历
用一个int字符count来记录有多少个子树,用一个arraylist链表来存储层次遍历的数字
最后再创建一个长度为count的数组,将链表中的数字传入数组,并作为返回值
有一些要注意的地方
1.quene就算add一个null,quene的size也会增加,因此,要对为null的子树进行一个判断,使他不存入数列
2. Queuequeue= new LinkedList<>();
代码
class Solution {
public int[] levelOrder(TreeNode root) {
Integer count=0;
Queue<TreeNode>queue= new LinkedList<>();
ArrayList<Integer>arrayList=new ArrayList<>();
if(root!=null)
{queue.add(root);
}
while (queue.size()!=0)
{
TreeNode t= queue.poll();
if(t!=null)
{int a=t.val;
arrayList.add(a);
count++;
queue.add(t.left);
queue.add(t.right);}
}
int []a=new int[count];
for (int i=0;i<count;i++)
{
int z=arrayList.get(i);
a[i]=z;
}
return a;
}
}