102、二叉树的层序遍历
基本思想:
从上到下、从左到右依次依次将每个数放入到队列中,然后按顺序依次打印就是想要的结果
具体实现:
1.先将二叉树的根节点放到队列que中
2.第一层循环中
定义列表itemList放二叉树每一层的结果
3.第二程循环中
len控制每一层,减到0的话说明二叉树的一层遍历完
如果队列que不为空,
弹出队列头加入列表itemList
然后判断节点是否有孩子,有的话,把孩子放入队列que
4.
代码:
class Solution { List<List<Integer>> resList = new ArrayList<List<Integer>>(); public List<List<Integer>> levelOrder(TreeNode root) { if (root == null) return resList; Queue<TreeNode> que = new LinkedList<TreeNode>(); que.offer(root); while (!que.isEmpty()){ List<Integer> itemList = new ArrayList<Integer>(); int len = que.size(); while (len > 0){ TreeNode tmpNode = que.poll(); itemList.add(tmpNode.val); if (tmpNode.left != null) que.offer(tmpNode.left); if (tmpNode.right != null) que.offer(tmpNode.right); len--; } resList.add(itemList); } return resList; } }