本文共 1002 字,大约阅读时间需要 3 分钟。
层次遍历二叉树。要求按层次从左到右输出每层的节点值。例子:
层次遍历,使用两个变量ll以及l记录当前层的最后一个节点和下一层加入到队列中的元素
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List
> levelOrder(TreeNode root) { List
> res = new ArrayList<>(); if (root == null) return res; LinkedList queue = new LinkedList<>(); TreeNode l = root, ll = root; // l为当前加入到队列的最后一个元素 ll为上一层的最末尾元素 queue.addLast(root); List tmp = new ArrayList<>(); while (!queue.isEmpty()) { TreeNode node = queue.removeFirst(); tmp.add(node.val); if (node.left != null) { queue.addLast(node.left); l = node.left; } if (node.right != null) { queue.addLast(node.right); l = node.right; } if (node == ll) { res.add(new ArrayList<>(tmp)); tmp = new ArrayList<>(); ll = l; } } return res; }}
层次遍历的实现
转载地址:http://mtesi.baihongyu.com/