二叉树的层序遍历>>>
借助队列实现层序遍历
:广度优先遍历是按层层推进的方式,遍历每一层的节点。广度优先需要用队列作为辅助结构,
public List<List<Integer>> levelOrder(TreeNode root) {
if (root == null) return null;
List<List<Integer>> rs = new ArrayList<>();
Queue<TreeNode> queue = new ArrayDeque<>();
while (!queue.isEmpty()) {
List<Integer> list = new ArrayList<>();
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode temp = queue.remove();
if (temp.left != null) queue.add(temp.left);
if (temp.right != null) queue.add(temp.right);
list.add(temp.val);
}
rs.add(list);
}
return rs;
}
二叉树的层序遍历–自底向上
public List<List<Integer>> levelOrderBottom1(TreeNode root) {
List<List<Integer>> rs = new ArrayList<>();
if(root==null) return rs;
Queue<TreeNode> queue = new ArrayDeque<>();
queue.add(root);
while(!queue.isEmpty()){
List<Integer> list = new ArrayList<>();
int size = queue.size();
for(int i=0;i<size;i++){
TreeNode treeNode = queue.remove();
list.add(treeNode.val);
if(treeNode.left!=null) queue.add(treeNode.left);
if(treeNode.right!=null) queue.add(treeNode.right);
}
rs.add(0,list);
}
return rs;
}