一、标题
二、思路
层序遍历是一种经典的二叉树遍历方法,通常利用队列来实现。详细步骤如下:
将根节点参加队列。
开始循环处理:
从队列中取出一个节点举行访问。
假如该节点有左子节点,则将左子节点入队。
假如该节点有右子节点,则将右子节点入队。
重复上述过程直到队列为空。
这样可以确保每一层的节点按序次被访问,并且其子节点依次参加队列等候后续处理。
三、代码
- class Solution {
- public List<List<Integer>> levelOrder(TreeNode root) {
- //1.定义集合存放层序遍历的结果
- List<List<Integer>> resList = new ArrayList<List<Integer>>();
- if (root == null){
- return resList;
- }
- //2.创建队列
- Queue<TreeNode> que = new LinkedList<TreeNode>();
- que.offer(root);
- while (!que.isEmpty()) {
- List<Integer> itemList = new ArrayList<Integer>();
- int len = que.size();
- //这里是核心逻辑,这里的len其实是每一层的节点个数,一开始只有一个节点。
- //第一次循环只执行一次,将根节点的左右孩子加入到队列中时,此时len就会更新成孩子个数
- //所以,当len为0时,说明当前层遍历完了,此时再执行一次循环,就会遍历下一层的节点
- 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); //处理完一层,将这一层的结果加入到resList中
- }
- return resList;
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |