从上往下打印二叉树

数据结构二叉树实验头文件 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点,则此二叉树为完全二叉树。具有n个结点的完全二叉树的深度为floor(log2n)+1。深度为k的完全二叉树,至少有2k-1个叶子结点,至多有2k-1个结点。 立即下载

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。(层序遍历)

思路: 使用队列这种数据结构,利用先进先出这种特性。

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

public class PrintFromTopToBottom {

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;
        }

    }

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        Queue<TreeNode> queue  = new LinkedList<>();
        ArrayList<Integer> list = new ArrayList<>();

        queue.add(root);

        while(!queue.isEmpty()){
            TreeNode cur = queue.poll();
            list.add(cur.val);
            if(cur.left != null){
                queue.add(cur.left);
            }
            if(cur.right != null){
                queue.add(cur.right);
            }
        }
        return list;
    }
}

相关推荐

PLCopen运动控制避坑指南:单轴功能块常见报错排查(基于SM3_Basic函数库)

本文深入解析PLCopen运动控制中单轴功能块的常见报错问题,基于SM3_Basic函数库提供实用排查指南。从功能块逻辑错误与硬件报错的甄别技巧到高频报错场景的解决方案,帮助工程师快速定位并解决运动控制系统中的稳定性问题,提升工业自动化设备的运行效率。

weixin_33686714的博客 317

树-数据结构与算法 -(打印二叉树)

打印二叉树 用二叉树的双指针结构存储二叉树,每个结点所含数据元素均为单个字母,试编程实现按树形状打印二叉树的算法。例如:图 1 的二叉树打印为右边的形状。 图 1 中的二叉树打印出来的树结构实际上是一个6行4列的矩阵,如图 2 所示。 若由下往上收集结点,得到的序列刚好是该树的中序遍历序列,因此打印树结构相当于按照中序遍历序列的相反次序进行打印,每个结点打印一行;该例子中,打印出来的树结点共 ...

JKR10000的博客 1万+

学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)

在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。

hzlalb的博客 3601

剑指offer-面试题32:从上到下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路分析 根据题目信息,就是对二叉树进行按层从左到右遍历,可以用队列存储结点对应的左右孩子结点,然后从队列中取出结点继续进行访问和加入孩子结点,直到队列为空,就是用队列来临时存放访问顺序就可以了; 从上到下打印二叉树的规律:每次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾,接下来到队列的头部取出最早...

进修的CODER 498

linux 内核vxlan收发包流程

1.vxlan口收包处理流程 前面几章详细介绍了vxlan接口的使用,而且已经知道vxlan是 MAC IN UDP中的封装,因此,在解封装之前,一切按照原有流程走,在此复习一下内核收发包流程(驱动层的数据处理这次不再解析,直接从__netif_receive_skb_core开始) #物理网卡处理中断,触发softirq i40e_intr └─napi_schedule_irqoff #i40e softirq把包放到per cpu backlog,触发softirq i40e_napi_p

魏言华的博客 3826

Mooncake架构:基于KVCache解耦的LLM推理优化方案

在大语言模型推理中,KVCache是Transformer解码过程中用于缓存历史Key/Value向量的核心数据结构,它避免了序列重复计算,但会随上下文长度线性增长,成为显存占用的主要部分。其原理是在自回归生成时,将已计算过的注意力键值对存储下来,供后续Token生成时直接使用,从而提升计算效率。这项技术的核心价值在于,通过高效管理KVCache,可以显著降低长序列推理时的显存压力,提升GPU资源利用率。在实际应用场景中,尤其是在处理长上下文对话、高并发请求时,KVCache的管理策略直接决定了服务的吞吐量

weixin_35753431的博客 536

32.1 从上往下打印二叉树

32.1 从上往下打印二叉树 NowCoder 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 解题思路 使用队列来进行层次遍历。 不需要使用两个队列分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 public ArrayList<Integer> PrintFromTopToBottom(Tr

weixin_44232942的博客 133

梦幻西游端游脚本开发实战:从易语言到大漠多线程全解析

本文详细解析了梦幻西游端游脚本开发的全流程,从易语言基础入门到大漠插件多线程实战。重点介绍了易语言中文编程优势、大漠插件图色识别技术,以及多线程控制台开发技巧,帮助开发者高效实现游戏自动化,提升脚本稳定性和执行效率。

weixin_29251567的博客 1061

二叉树的打印

题目来源:牛客网-剑指offer 题目描述:从上往下打印树的每一个结点,同层结点从左至右打印 思路: 我们一般输出二叉树结点是通过三种常用的遍历方法:前序遍历,中序遍历,后序遍历。这三种遍历分别是什么这里就不过多介绍了,网上随便一查会有很多。这里要求的输出顺序与这三种常用的方法不同,有点类似先序遍历,因为先输出的是根结点,但是又并不完全相同,因为先序遍历会顺着子树一直向下直到根结点,再逐层返回。#...

性格如此、 627

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 407

PyTorch深度学习实战(24)——使用U-Net架构进行图像分割

图像分割 (Image segmentation) 是计算机视觉领域中的一个重要任务,旨在将图像划分为具有语义信息的不同区域或对象。与目标检测任务不同,图像分割要求像素级别的精确定位和分类,将每个像素标记为属于哪个类别或属于哪个区域。在本节中,我们将介绍图像分割的基本概念,并训练一个基于 U-Net 架构的图像分割模型。

盼小辉丶的博客 1万+

剑指Offer 022从上往下打印二叉树

022从上往下打印二叉树 题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 方法:用列表模拟栈法 思路:用一个arrayList来模拟queue,用while来判断只要queue存在元素就继续看每个元素的是否有左右节点,有的话就放入queue中 代码: public ArrayList<Integer> PrintFromTopToBottom(TreeNode roo...

从零学起 139

实干派!网易易盾增强版滑块验证码,全方位讲解识别思路(含源码)

该验证码是异形滑块验证码中的一种,缺口旋转+偏移的处理需要你有很好的图像处理知识,能很好的处理透明通道,同时,该验证码需要你能很好的处理缺口和背景之间匹配的关系,该验证码的处理难点就是两个缺口之间如何找到正确的,两个检测框都有很强的相似度,且加上背景图的干扰,在图像处理和有优化上难度大大增加。

码王吴彦祖的博客 2016

剑指offer-从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路 利用队列先进先出的特点,异常将结点已经左右孩子加入队列,处理完后弹出,知道队列为空停止。 相关 queue 的基本操作有: 入队,如例:q.push(x); 将x 接到队列的末端。 出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。 访问队首元素,如例:q.front(),即最早被压入队列的...

zero 141

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

剑指offer 从上往下打印二叉树

题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 使用递归的思想,每层节点值放入ArrayList,不断每层遍历,得到结果。 代码(java): import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; Tre...

leo_weile的博客 104

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 提交代码: class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<TreeNode> v_in; vector<int> v_out; if (root==NULL...

luzhongshan的博客 1214

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

牛客题解 | 从上往下打印二叉树

牛客题库题解

wc529065的博客 1001

【剑指offer】从上往下打印二叉树

【剑指offer】从上往下打印二叉树 【本题链接】 【题目描述】 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 【题目解析】 本题主要考察了队列、树等数据结构的使用,题目描述已经很清晰了,就是层序遍历这棵树,我们根据队列先进先出的规则来解决此题。 【解题思路】 1.若树为空,则直接返回数组 2.若不为空,则按照根节点,根的左子树节点和右子树节点进行打印 3.将根节点进入队列,取到对头的元素放入数组,进行出队操作,根的左节点和右节点依次进入队列(左右节点为空则跳出),将已放入数组的对头结点删除。 4

qq_43676757的博客 845
上一篇: 调整数组顺序使奇数位于偶数前面
下一篇: 栈的压入、弹出序列
coder_flag
博客等级 码龄9年 2粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值