1. 题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

2. 思路

层次遍历

3. 递归

public class Solution {ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {ArrayList<ArrayList<Integer>> list = new ArrayList<>();depth(pRoot, 1, list);return list;}private void depth(TreeNode root, int depth, ArrayList<ArrayList<Integer>> list) {if(root == null) return;if(depth > list.size())list.add(new ArrayList<Integer>());list.get(depth -1).add(root.val);depth(root.left, depth + 1, list);depth(root.right, depth + 1, list);}
}

4. 非递归

import java.util.*;public class Solution {static ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {return levelorder(pRoot);}public static ArrayList<ArrayList<Integer>> levelorder(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();ArrayList<ArrayList<Integer>> result = new ArrayList<>();if(root == null) return result;queue.offer(root); // 首先将根节点root入队while (!queue.isEmpty()) {// Queue不为空则循环ArrayList<Integer> node = new ArrayList<>();// 保存每一层节点的值int length = queue.size();// 每一层的节点数目while (length > 0) {TreeNode tree = queue.poll();if (tree.left != null) {queue.offer(tree.left);}if (tree.right != null) {queue.offer(tree.right);}node.add(tree.val);length--;}// 循环结束后,得到的Queue为下一层做准备,node为本层遍历结果
            result.add(node);}return result;}
}

转载于:https://www.cnblogs.com/haimishasha/p/11520955.html

剑指offer:二叉树打印成多行(层次遍历)相关推荐

  1. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

  2. 《剑指offer》-- 二叉树的下一个结点、对称二叉树、按之字性顺序打印二叉树、把二叉树打印成多行

    一.二叉树的下一个结点: 1.题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 2.解题思路: 分析二叉树 ...

  3. 剑指offer编程试题Java实现--60.把二叉树打印成多行

    个人博客:小景哥哥 60.把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. import java.util.ArrayList; import java ...

  4. 求二叉树上结点的路径_剑指offer 二叉树

    二叉树的镜像(简单) 操作给定的二叉树,将其变换为源二叉树的镜像. 思路: 根节点左右节点调换位置 递归 注意判断空子树情况 二叉树的深度(简单) 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经 ...

  5. 【LeetCode】剑指 Offer 17. 打印从1到最大的n位数

    [LeetCode]剑指 Offer 17. 打印从1到最大的n位数 文章目录 [LeetCode]剑指 Offer 17. 打印从1到最大的n位数 一.大数 一.大数 将 1~9 加入队列 对队列中 ...

  6. 【剑指 Offe】剑指 Offer 17. 打印从1到最大的n位数

    目录标题 算法汇总 题目 关键点 代码 1.解体方法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码地址链接:力 ...

  7. [剑指offer]顺时针打印矩阵

    [剑指offer]顺时针打印矩阵 剑指offer-顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4, ...

  8. [剑指offer]二叉搜索树的后序遍历数列

    [剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...

  9. C#刷剑指Offer | 二叉树中和为某一值的路径

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  10. 剑指offer 二叉树的深度

    剑指offer 牛客网 二叉树的深度 # -*- coding: utf-8 -*- """ Created on Wed Apr 10 09:29:36 2019@au ...

最新文章

  1. 如何开发一个区块链应用程序
  2. 【PC工具】更新免费文库文档下载器,破解文库下载器,免费下载文库文档
  3. 牛客题霸 NC24 删除有序链表中重复的元素-II
  4. boost::intrusive::pointer_traits用法的测试程序
  5. Swift中文件和图片上传处理
  6. Java中常用的集合
  7. Java fianl关键字的理解
  8. HttpServletRequest应用-获取请求参数及解决中文乱码
  9. 粗看ES6之JSON
  10. 安装cnpm (npm淘宝镜像)
  11. 强悍的 Linux —— 常用 shell
  12. C++中一个类禁止继承好麻烦
  13. 高斯模型MATLAB的实现,高斯混合模型GMM实现matlab
  14. 软件需求分析报告模板
  15. js动态显示实时时间
  16. 茅侃侃自述离职Majoy经过:让我们从“失败”开始
  17. android aar组件化,android module解耦组件化总体概述(推荐)
  18. ubuntu-Errors were encountered while processing
  19. 经典网页设计:30个独具匠心的单页网站设计案例
  20. 《说医不二》-懒兔子 读书笔记

热门文章

  1. OpenShift 4 之 配置基于Red Hat SSO的Identity Providers
  2. OpenShift 4 之 GitOps(4)用ArgoCD向Multi-Cluster发布应用
  3. 完整的 .NET Core 目标框架的预处理器符号列表
  4. maven netty 配置_进阿里、腾讯、字节跳动、美团必掌握的Netty
  5. python提取文本中的数字_EXCEL中提取汉字、字母、数字如此简单
  6. java 泛型参数_[基础]-Java泛型
  7. c 语言中out的作用,C语言outData+是什么意思做什么用?
  8. python爬虫影评_python爬虫实战一:分析豆瓣中最新电影的影评
  9. mysql循环更新_MySql多表循环遍历更新
  10. 连接linux系统的mysql,Linux系统MySQL开启远程连接