java编程题之从上往下打印出二叉树

Java编程题之从上往下打印出二叉树

题目描述

给定一棵二叉树的根节点,从上往下按层打印出这个二叉树,同一层的节点按照从左到右的顺序打印。

例如,给定一个如下所示的二叉树:

    8
   / \
  6   10
 / \  / \
5  7 9   11

打印出的顺序为:8 6 10 5 7 9 11。

解题思路

此题的解法可以用到二叉树的遍历,我们可以用队列来保存每一层的节点。

  1. 将根节点加入队列,然后不断遍历队列,如果队列非空,则进行以下操作:
  2. 将队列中的节点出队
  3. 输出该节点的值
  4. 将该节点的左右子节点加入队列
  5. 重复步骤一,直到队列为空。

代码实现

import java.util.ArrayList;
import java.util.LinkedList;

public class PrintFromTopToBottom {

    public ArrayList<Integer> printFromTopToBottom(TreeNode root) {
        ArrayList<Integer> result = new ArrayList<>();
        if (root == null) {
            return result;
        }
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);//将根节点加入队列
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();//将队列中的节点出队
            result.add(node.val);//输出该节点的值
            if (node.left != null) {
                queue.offer(node.left);//将该节点的左子节点加入队列
            }
            if (node.right != null) {
                queue.offer(node.right);//将该节点的右子节点加入队列
            }
        }
        return result;
    }

    private static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int val) {
            this.val = val;
        }
    }
}

示例说明

示例1

二叉树结构:

    8
   / \
  6   10
 / \
5  7

预期输出结果:

8 6 10 5 7

调用示例:

PrintFromTopToBottom.TreeNode root = new PrintFromTopToBottom.TreeNode(8);
root.left = new PrintFromTopToBottom.TreeNode(6);
root.right = new PrintFromTopToBottom.TreeNode(10);
root.left.left = new PrintFromTopToBottom.TreeNode(5);
root.left.right = new PrintFromTopToBottom.TreeNode(7);
PrintFromTopToBottom solution = new PrintFromTopToBottom();
System.out.println(solution.printFromTopToBottom(root));

示例2

二叉树结构:

    1
     \
      2
       \
        3

预期输出结果:

1 2 3

调用示例:

PrintFromTopToBottom.TreeNode root = new PrintFromTopToBottom.TreeNode(1);
root.right = new PrintFromTopToBottom.TreeNode(2);
root.right.right = new PrintFromTopToBottom.TreeNode(3);
PrintFromTopToBottom solution = new PrintFromTopToBottom();
System.out.println(solution.printFromTopToBottom(root));

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java编程题之从上往下打印出二叉树 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Spring Data JPA进行数据分页与排序的方法

    下面是使用Spring Data JPA进行数据分页与排序的完整攻略: 准备工作 首先需要在项目的pom.xml文件中引入spring-data-jpa和数据库驱动,例如: <dependency> <groupId>org.springframework.data</groupId> <artifactId>…

    Java 2023年5月20日
    00
  • SpringBoot环境下junit单元测试速度优化方式

    下面是详细讲解“SpringBoot环境下junit单元测试速度优化方式”的完整攻略。 SpringBoot环境下junit单元测试速度优化方式 背景 在我们进行Java项目的开发过程中,经常需要编写单元测试用例来验证程序的正确性。在进行单元测试时,测试用例的执行速度非常重要。 现在大多数Java项目都采用了SpringBoot框架来进行开发和测试。在这种情…

    Java 2023年5月20日
    00
  • Java工具之ja-netfilter 2022.1 配置教程

    Java工具之ja-netfilter 2022.1 配置教程 简介 ja-netfilter 是一款基于 Java 开发的网络过滤工具,它能够实现网络数据包的过滤、转发、拦截等功能。本教程将详细介绍该工具的配置过程。 安装 首先需要安装 Java 运行环境,官方推荐使用 Java 8 或更高版本。 下载最新版本的 ja-netfilter,可以从官方网站h…

    Java 2023年5月27日
    00
  • OpenGL ES正交投影实现方法(三)

    OpenGL ES正交投影实现方法(三) 在前两篇文章中,我们已经了解了OpenGL ES正交投影的基本概念和实现方法。本文将为大家介绍如何在OpenGL ES中实现正交投影。我们将通过以下步骤来完成这个过程。 步骤一:创建投影矩阵 在OpenGL ES中,我们可以使用以下公式来创建投影矩阵: Ortho(left, right, bottom, top, …

    Java 2023年5月26日
    00
  • 简单了解SpringMVC常用组件作用解析

    以下是关于“简单了解SpringMVC常用组件作用解析”的完整攻略,其中包含两个示例。 简单了解SpringMVC常用组件作用解析 SpringMVC是一个基于MVC构架的Web框架,它提供了一种灵活、高效的方式来开发Web应用程序。在SpringMVC中,有一些常用的组件,下面我们来简单了解一下这些组件的作用。 DispatcherServlet Disp…

    Java 2023年5月16日
    00
  • 举例说明Java中代码块的执行顺序

    我来为你详细讲解一下Java中代码块的执行顺序。 在Java中,代码块是一组语句,它们被包含在一对大括号中。它们可以是类中的静态或非静态代码块,或是方法中的局部代码块。在执行Java代码时,它们会按照一定的顺序被执行。 Java中,代码块的执行顺序为:静态代码块->非静态代码块->构造函数->普通方法。 以下是两个示例来说明Java中代码块…

    Java 2023年5月23日
    00
  • 详解Java的Spring框架中的事务管理方式

    详解Java的Spring框架中的事务管理方式 什么是事务管理 事务管理是指对于需要具有原子性和一致性的业务流程操作,保证其执行结果要么全部成功执行完成,要么全部回滚到最初状态,异常情况下,业务操作要么完全执行成功,要么完全执行失败。 Spring框架中的事务管理 在Spring框架中,主要有三种方式进行事务管理:编程式事务、声明式事务、注解式事务。 编程式…

    Java 2023年5月19日
    00
  • 如何使用Spring-Test对Spring框架进行单元测试

    Spring-Test是一个Spring框架提供的测试工具,可以帮助我们方便的对Spring框架进行单元测试。下面将提供一个详细的攻略,讲解如何使用Spring-Test进行单元测试。 步骤一:添加依赖 在使用Spring-Test之前,需要在项目中添加Spring-Test依赖。如果使用Maven构建项目,可以在pom.xml文件中添加如下配置: <…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部