【简单】面试题32 - II. 从上到下打印二叉树 II

32 - II. 从上到下打印二叉树 II 我们可以使用 BFS 的方法来解决这道题。从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。最后返回答案数组即可。是二叉树的节点个数。 阅读详情

【题目】
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
来源:leetcode
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/
【示例】
给定二叉树: [3,9,20,null,null,15,7]
输出:3,9,20,15,7
【提示】
节点总数 <= 1000
【代码】queue实现的层次遍历
执行用时 :4 ms, 在所有 C++ 提交中击败了89.64% 的用户
内存消耗 :12.8 MB, 在所有 C++ 提交中击败了100.00%的用户

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root)
            return {};
        queue<TreeNode*> q;
        vector<vector<int>> vv;
        q.push(root);
        while(!q.empty()){
            vector<int> v;
            int qsize=q.size();
            for(int i=0;i<qsize;i++){
                TreeNode*node=q.front();
                if(node->left)
                    q.push(node->left);
                if(node->right)
                    q.push(node->right);
                q.pop();
                v.push_back(node->val);
            }
            vv.push_back(v);
        }
        return vv;
    }
};

【实现二】性能与上面一个一样,用queue作为辅助,设置end节点
执行用时 :4 ms, 在所有 C++ 提交中击败了89.60% 的用户
内存消耗 :12.6 MB, 在所有 C++ 提交中击败了100.00%的用户

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root)
            return {};
        queue<TreeNode*> q;
        vector<vector<int>> vv;
        q.push(root);
        TreeNode*end=root;
        vector<int> v;
        while(!q.empty()){
            TreeNode*node=q.front();
            if(node->left)
                q.push(node->left);
            if(node->right)
                q.push(node->right);
            v.push_back(node->val);
            q.pop();
            if(node==end){
                end=q.back();
                vv.push_back(v);
                v.clear();
            }
        }
        return vv;
    }
};
剑指Offer之二叉树系列:从上往下打印二叉树(I、II、III)、二叉树中和为某一值的路径 剑指Offer(二十二):从上往下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 解题思路:先进先出,队列的思想 从上到下打印二叉树的规律:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都打印出来为止。 代码实现 C++: /** * Definition for a binary tree node. * struct TreeN 立即下载

相关推荐

Quest 3开发第一步:搞定Meta账号登录和Oculus软件连不上设备的那些坑(2024实测)

本文详细介绍了Quest 3开发初期的关键步骤,包括Meta账号注册、Oculus软件安装与设备连接等常见问题的解决方案。针对国内开发者遇到的邮箱限制、验证码接收等难题,提供了实用的应对策略,并分享了开发环境配置和常见问题排查技巧,帮助开发者快速搭建Quest 3开发环境。

weixin_30333885的博客 499

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

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

JKR10000的博客 1万+

紫光PG2L100H平台DDR3 IP核调试实战:从AXI接口到状态机设计的避坑指南

本文详细介绍了在紫光PG2L100H FPGA平台上调试DDR3 IP核的实战经验,重点解析了AXI接口的特殊行为和状态机设计的关键技巧。通过具体代码示例和调试方法,帮助开发者规避常见陷阱,实现高性能DDR3控制器设计,达到1.2GB/s的稳定带宽。

weixin_28717969的博客 219

Tree-022-从上往下打印二叉树

题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 即对二叉树进行层次遍历 思路 把二叉树的节点存入队列 如果不为空 则把值存入Arraylist 访问后删除队列中的元素 同时保存给tmp 如果tmp的左孩子不为空 存入队列 如果又孩子不为空 存入队列 代码 import java.util.*; public class Solution { public ArrayList&...

bakaka9527的博客 185

从零开始,用Cadence Virtuoso手把手仿真一个1.5V LDO(附完整电路与仿真脚本)

本文详细介绍了如何使用Cadence Virtuoso从零开始仿真一个1.5V LDO,包括环境准备、电路导入、Testbench构建、核心仿真类型分析以及高级调试技巧。通过完整的电路与仿真脚本,帮助读者掌握LDO设计与仿真的关键技术,提升电路设计能力。

weixin_31309419的博客 447

VN1630A硬件配置指南:手把手教你用CanApe搭建XCP标定工程(附ELF文件配置技巧)

本文详细介绍了如何使用VN1630A硬件和CanApe软件搭建XCP标定工程,包括硬件配置、CanApe工程创建、ELF文件处理及XCP协议层配置等关键步骤。特别针对实际项目中常见的错误和细节问题提供解决方案,帮助工程师高效完成ECU参数标定工作。

git9versioner的博客 1160

算法:如何较为直观地打印二叉树

二叉树可以用常规的三种遍历结果来描述其结构,但是不够直观,尤其是二叉树中有重复 值的时候,仅通过三种遍历的结果来构造二叉树的真实结构更是难上加难,有时则根本不可能。 给定一棵二叉树的头节点 head,已知二叉树节点值的类型为 32 位整型,请实现一个打印二叉 树的函数,可以直观地展示树的形状,也便于画出真实的结构。(1)第一步要解决的问题是用什么样的方式可以无歧义的打印二叉树,也就是设计打印的样式。这里我们是这样做的:假设有二叉树如下 打印出的样式如下:怎么看呢?(2)第二个要解决的问题:规定节点打印时占

OceanStar的博客 1181

Dify搭建AI测试用例生成器

1、获取产品需求文档2、解读、分析、挖掘需求点,提炼为测试点3、依据测试点,生成详细的测试用例4、输出测试用例1、打开 Dify 控制台,依次点击【工作室】-【ChatFlow】-【创建空白应用】。

十二测试录 1372

LeetCode C++ 剑指 Offer 32 - III. 从上到下打印二叉树 III【Tree/BFS】中等

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7] , 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [20,9], [15,7] ] 提示:节点总数 <= 1000 解法 BFS+标志变量 class Solution { public:

memcpy0的博客 526

基于matlab的CNN物体识别物体分类系统

主要对物体进行识别,搭建一个物体分类系统本次实验选择规模稍大的 CIFAR-10 数据集进行分类识别,对应图像的大小设计 VggNet、ResNet 进行网络训练。在实际操作过程中,受限于数据规模和硬件配置,对于大小放缩、批次参数、训练步数等进行了多次调试,这也对以后的图像分类任务具有较高的参考意义,并通过对 CIFAR-10 数据集进行训练和评测,采用网络修改的方式来得到新的 CNN 结构,适用于对网络进行配置、融合等相关研究。读者可以通过自行设计或选择其他网络、加载其他数据等方式进行实验的延伸。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2007

【第1章>第5节】SOM自组织映射网络的理论学习与MATLAB仿真

自组织映射网络(Self-Organizing Map,SOM)是一种无监督学习的人工神经网络,由芬兰学者Teuvo Kohonen于1981年提出,也被称为Kohonen网络。它的主要功能是将高维输入数据映射到低维(通常是二维)的离散网格上,同时保持输入数据的拓扑结构,即相邻的输入数据在映射后的网格上也相邻。

FPGA/MATLAB学习教程/源码/项目合作开发 403

剑指offer第22题:II. 从上到下打印二叉树 II

22、II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 提示: 节点总数 <= 1000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-

codehorse 161

推荐系统中召回率Recall计算方式附代码

Recall(召回率)是指在所有实际有交互的用户 - 物品对中,推荐系统成功预测出的比例。具体来说,设所有有交互的用户 - 物品对为S,推荐系统预测出的用户 - 物品对为T,则Recall的计算公式为:

优快云 精品推荐 1843

【Python】【难度:简单】Leetcode 面试题32 - II. 从上到下打印二叉树 II

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 提示: 节点总数 <= 1000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-shang-dao-xi...

thomashhs12的博客 169

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

剑指offer 面试题32 - II. 从上到下打印二叉树 II [简单]——queue

我的解题: 因为先做的双向队列的那道题,所以这道题比较简单写,直接queue层次遍历即可 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if(!roo...

Vermouth_Su的博客 173

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

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

LeetCode | 面试题32 - II. 从上到下打印二叉树 II【剑指Offer】【Python】

LeetCode 面试题32 - II. 从上到下打印二叉树 II【剑指Offer】【Easy】【Python】【二叉树】【BFS】

Wonz 708

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Leetcode面试题32 - II. 从上到下打印二叉树 II

Leetcode面试题32 - II. 从上到下打印二叉树 II 难度:简单 19从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7]] from queue import Queue # Definition for a binary tree node. class..

test121210的博客 203

[剑指 offer]--树--面试题32 - I. 从上到下打印二叉树➕面试题32 - II. 从上到下打印二叉树 II➕面试题32 - III. 从上到下打印二叉树 III

1 题目描述 面试题32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 面试题32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 面试题32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的...

努力变得不菜的菜鸡的博客 257

leetcode--面试题32-II.从上到下打印二叉树II

 题目来自LeetCode,链接:面试题32 - II. 从上到下打印二叉树 II。具体描述为:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。  例如给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7  返回: [ [3], [9,20], [15,7] ]  这道题其实就是二叉树的层序遍历,跟上一道题很类似,不同的是返回结果是每一层打印一行,那也只需要每次进入循环之后记

JR_Chan的博客 332

面试题32-II.从上到下打印二叉树II

题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 示例 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 代码 从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS),BFS通常借助队列来实现。 算法流程: 特例处理: 当根节点为空,则返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [r

pwlwell的博客 248

LeetCodeEasy-【面试题32 - II. 从上到下打印二叉树 II】

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 提示: 节点总数 <= 1000 注意:本题与主站 102 题相同:https://leetcode-cn.com/pro...

ystraw - Come on!!! 235

面试题32:从上到下打印二叉树

从上到下打印二叉树题目描述 题目描述 不分行从上到下打印二叉树 利用队列,打印当前节点时,应将该节点的孩子节点放入队列中。每次取队首元素进行打印 分行从上到下打印? 加入分行的标志节点,一个变量表示当前的节点数,另一个表示下层节点数 void PrintTree(BinaryTreeNode *pRoot) { if(pRoot == nullptr) return; queue...

一只咸鱼的小努力 242

面试题32:从上到下打印二叉树

题目: 不分行从上到下打印二叉树。 从上到下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 分析: 这里就是按照层次遍历,我们需要一个队列来辅助完成遍历。 每次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来。 解法: package com.w...

王劭阳的博客 242

LeetCode | 面试题32 - III. 从上到下打印二叉树 III【剑指Offer】【Python】

LeetCode 面试题32 - III. 从上到下打印二叉树 III【剑指Offer】【Medium】【Python】【二叉树】【BFS】

Wonz 663

剑指offer——从上到下打印二叉树(面试题32)

题目一:不分行从上到下打印二叉树 题目描述: 从上到下按层打印二叉树,同一层结点从左至右输出。 详细代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right =...

Lucia_0103的博客 247

LeetCode | 面试题32 - I. 从上到下打印二叉树【剑指Offer】【Python】

LeetCode 面试题32 - I. 从上到下打印二叉树【剑指Offer】【Medium】【Python】【二叉树】【BFS】

Wonz 671
上一篇: 【简单】897. 递增顺序查找树
下一篇: 【简单】476. 数字的补数
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值