剑指Offer------把二叉树打印成多行(层序遍历)
2017-10-13 21:26
441 查看
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。<分析>:
本题就是多了个条件
一层输出一行
那么就多设置两个变量即可,
一个此行开始start,另一个此行结束end
当遍历到end时,就将这行数据存入list中即可
package com.ex.string; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } /** * * @author 周颖 * @date 2017年10月13日 下午9:12:42 * @Decription 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 */ public class Ex7 { ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<>(); if (pRoot==null) { return result; } Queue<TreeNode> queue = new LinkedList<>(); ArrayList<Integer> list = new ArrayList<>(); //根结点入队 queue.offer(pRoot); //第一行只有一个结点,故终点为1 int start=0,end=1; while(!queue.isEmpty()){ TreeNode node = queue.poll(); list.add(node.val); start++; if (node.left!=null) { queue.offer(node.left); } if (node.right!=null) { queue.offer(node.right); } if (start==end) { end=queue.size(); start=0; result.add(list); list=new ArrayList<>(); } } return result; } }
相关文章推荐
- 剑指offer面试题23:从上到下打印二叉树(树的层序遍历)
- 面试题23:从上往下打印二叉树(层序遍历) && 面试题25:二叉树中和为某一值的路径
- 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
- 程序9——层序遍历二叉树(从上往下打印二叉树)
- (剑指Offer)面试题60:把二叉树打印成多行
- 把二叉树打印成多行(二叉树的层次遍历)
- 从上到下打印二叉树——层序遍历二叉树
- 剑指offer(57)-把二叉树打印成多行
- 二叉树的(按行打印)层序遍历,树的高度,判断是否为平衡二叉树
- 从上到下打印二叉树(层序遍历,广度优先遍历二叉树)
- (剑指Offer)面试题61:把二叉树打印成多行
- python剑指offer系列把二叉树打印成多行
- 《剑指offer》把二叉树打印成多行
- 剑指offer 23----二叉树的前序、中序、后序、层序遍历
- 剑指Offer23 : 从上而下打印二叉树--层序遍历
- 剑指Offer------从上往下打印二叉树(层序遍历)
- 剑指offer-把二叉树打印成多行
- [置顶] 剑指offer:第23题从上往下打印二叉树-广度遍历
- 剑指offer——面试题60:把二叉树打印成多行
- 栈的压入、弹出序列 和从上往下打印二叉树(层序遍历)