c++实现---多行从上往下打印二叉树

按树状输出二叉树 按树状输出二叉树 按竖向树状打印的二叉树 立即下载

题目描述:给定一颗二叉树,从左到右从上到下打印二叉树。要求是要按层换行。
方法:层次遍历打印二叉树,用队列实现。本题是上一篇的变形,区别就是这个需要考虑到层数。
首先复习一下模板:
如果不需要确定当前遍历到了哪一层,模板如下:

void bfs() {
    vis[] = 0;
    queue<int> pq(start_val);

    while (!pq.empty()) {
        int cur = pq.front(); pq.pop();
        for (遍历cur所有的相邻节点nex) {
            if (nex节点有效 && vis[nex]==0){
                vis[nex] = 1;
                pq.push(nex)
            }
        }
    }
}

如果需要确定遍历到哪一层,模板如下;


```cpp
void bfs() {
 int level = 0;
 vis[] = {0}; // or set
 queue<int> pq(original_val);
 while (!pq.empty()) {
     int sz = pq.size();

     while (sz--) {
             int cur = pq.front(); pq.pop();
         for (遍历cur所有的相邻节点nex) {
             if (nex节点有效 && vis[nex] == 0) {
                 vis[nex] = 1;
                 pq.push(nex)
             }
         } // end for
     } // end inner while
     level++;

 } // end outer while
}

本题代码:


class Solution {
public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int>> res;
            if(!pRoot) return res;
            queue<TreeNode*> help;
            help.push(pRoot);//根节点入队列
            while(!help.empty()){
                int sz=help.size();
                vector<int> ans;
                while(sz--){
                    TreeNode * node=help.front();//先保存队列头节点
                    help.pop();//队首元素出队列
                    ans.push_back(node->val);//出队列的元素压入vector
                    if(node->left) help.push(node->left);//将出队列元素的非空左右子节点入队列
                    if(node->right) help.push(node->right);
                }
                res.push_back(ans);//将一个容器压入到另一个容器,实现多行打印
            }
        return res;
        }
};
数学建模灵敏性分析(一阶、二阶灵敏度)python代码+懒人专用版 对于勉强看懂了灵敏度分析的同学来说,本文给出一个方便移植、修改的python程序,可以很方便地进行灵敏度分析。 阅读详情

相关推荐

STM32H750实战:如何用CubeMX配置NAND Flash时序(附常见问题排查)

本文详细解析了STM32H750通过CubeMX配置NAND Flash时序的实战技巧,包括硬件连接、时序参数计算与优化策略,以及常见问题如RGB屏幕干扰、多片选冲突的解决方案。特别针对NAND Flash的时序配置和抗干扰设计提供了实用代码示例和优化建议,帮助开发者提升系统稳定性和性能。

weixin_29176179的博客 365

多行输出(简洁版)

如何实现多行输出 简单说,就是在printf内将每一行都用英文双引号将要输出的内容引起来。

m0_73968650的博客 1024

QMT实盘避坑指南:从环境配置到策略部署的完整流程(含国金证券路径设置)

本文是一份详尽的QMT实盘交易避坑指南,重点解析了从环境配置到策略部署的完整流程。针对国金证券QMT平台,文章深入剖析了核心架构、精准路径配置、关键参数解析、交易操作实战及异常处理,并提供了策略部署、监控与日志构建的完整方案,旨在帮助具备Python基础的开发者规避常见陷阱,实现稳定可靠的实盘交易。

weixin_29309475的博客 595

C++原封不动的输出多行字符串

【代码】C++原封不动的输出多行字符串。

2303_79552392的博客 578

GraphRAG 与 HippoRAG 深度对比:在 RAGFlow 中如何选择知识图谱方案?

本文深入对比了GraphRAG与HippoRAG在RAGFlow中的知识图谱构建方案,分析了两者在技术架构、资源消耗和场景适配性上的核心差异。GraphRAG适合需要快速响应和资源有限的场景,而HippoRAG则更适用于精确关系推理的专业领域。文章还提供了RAGFlow的演进路线和选型决策框架,帮助架构师根据实际需求做出合理选择。

weixin_27889245的博客 247

绕过卡巴斯基通过RPC控制lsass注入DLL

参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通...

2ed 3525

剑指offer(C++)——把二叉树打印成多行

题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 /* 思路:对二叉树进行层次遍历,利用一个队列来保存将要打印的结点。为了把二叉树的每一层结点单独打印到一行, 需要设置两个变量:一个表示当前层中还没有打印的结点数(currentLevels),另一个表示下一层结点的数目(nextLevels) */ struct TreeNode { int v

YF_Li123的博客 1901

【异常】Error loading ASGI app. Could not import module ‘main‘

出现或。

奶爸的编程之路,也就一周冷个三天 1856

C++ 11 实现一次性输出多行文本-无需转义符----原始字符串文本(Raw String Literal)的应用

面对需要多段字符输出结果的情况,C++11中的新特性:Raw String Literal,可谓是造福人民。 示例 原理 旧的字符串字面量的语法对于带有特殊字符意义的字面量需要添加转义符 "\" 来表示。 如: 转义符 输出 \n 换行 \t 水平制表 \v 垂直制表 ’ 单引号字符 " 双引号字符 因此面对一些比较繁琐的输出格式时,我们常常需要使用大量的转义符。 尤其是在正则表达式中。 想实现下面式子 \d{1}-\d{2}|\d{6}-\d{2} 我们需要写成 \

LvTwelve 1万+

黏菌优化算法(SMA)详解:从生物智能到优化引擎

黏菌优化算法(SMA)是一种新型生物启发式优化算法,模拟多头绒泡菌的智能觅食行为。该算法包含接近食物、包围食物和抓取食物三个阶段,通过数学模型将生物行为转化为优化过程。SMA采用权重自适应机制和参数振荡模型实现探索与开发的平衡,具有参数简单、收敛性好等优势。算法可通过MATLAB/Python实现,并应用于函数优化、工程设计和神经网络训练等领域。研究表明SMA在求解复杂优化问题时表现优异,未来可通过混沌增强、混合策略等方式进一步提升性能。

qq_42212808的博客 661

Esp32蓝牙Hid调用方案 http执行设备、鼠标、键盘相关操作

本文主要介绍 Esp32 蓝牙 Hid 相关的多种操作方式,详细的设备、鼠标、键盘相关操作的 http 调用方法。下面是整理出的所有 http 调用方法和 rhino 引擎方式。本机调用的话直接使用http://localhost:8080 如果是局域网调用则使用软件里的地址 比如我的是http://192.168.1.5:8080。文件地址: https://www.123865.com/s/Qtm4jv-xyZbd?使用前需要一块烧录好的ESP32板子并在手机安装好embedded软件用于蓝牙通信。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 570

C语言随笔_printf输出多行

想在printf中,输出多行数据,如果写成下面这样: printf("line 1\n line 2\n line 3\n"); 编译器会报错“error C2001: newline in constant”。 可以这样写: printf("line 1\ line 2\ line 3\n...

chenliuna5464的博客 3557

大模型——dify实战通过dify搭建你自己的图片识别服务

本文介绍了如何通过Dify平台搭建图片识别服务。首先创建工作流,添加支持图片上传的字段,并配置视觉模型qwen-vl-max-latest进行图像分析。文章详细说明了各步骤操作,包括字段设置、模型选择、提示词编写等。在测试阶段发现URL解析问题后,提供了解决方案:修改Dify的.env文件,调整FILES_URL配置并重启服务。最终成功实现上传图片或输入图片链接后,AI能够准确分析并返回简洁的图片内容描述。这一方案适用于需要快速部署图像识别功能的场景。

1927

剑指offer - 59 -- 按之字形顺序打印二叉树 - C++

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 示例1 输入 {8,6,10,5,7,9,11} 返回值 [[8],[10,6],[5,7,9,11]] 题解 层序遍历,并且偶数层按倒序输出,直接上代码 class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) {

小白_努力 213

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从上往下打印二叉树C++

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。打印二叉树的有两种方式:深度优先遍历或者广度优先,这道题要求同层结点从左至右打印, 说明需要进行广度优先遍历,为了达到这个目的,我们需要借助数据结构:队列,不断将根结点、左孩子结点、友孩子结点push进入队列中,同时进行打印操作;具体细节见代码:/* struct TreeNode { int val; struct TreeNod...

weixin_37725502的博客 3585

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从上往下打印二叉树

【题目】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如:打印结果:8,6,10,5,7,9,11。【分析】二叉树遍历方式:前序,中序,后序,还有一种广度优先遍历,在对图遍历时涉及到,而二叉树可以看作退化的图,从例子中可以看出,打印顺序是按层决定的,观察发现,打印完根节点之后,然后打印其左右节点,再继续打印左节点的左右孩子和右结点的左右孩子,由此可以发现,如果将其结点的左右孩

xinyu913 2379

温度PID控制PLC程序

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

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

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

qq_43676757的博客 845

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

牛客题库题解

wc529065的博客 1001

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

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

luzhongshan的博客 1214

从上往下打印二叉树 — C++实现

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 牛客网题目链接 解题思路 此题属于队列的应用,具体解题过程为: 遇到根节点,先输出 如果其有左右子结点,则将左右子结点存在队列中(置于队尾) 再从队列中按序取出结点,并进行相同的操作,直至队列为空位置 代码实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector <int>res

Jeaten 364

上往下打印二叉树

一、前言 前文《直观的打印树结构》完成了树结构打印,《重建二叉树》完成了二叉树的创建,接下来需要上往下打印二叉树 《直观的打印树结构》https://blog.youkuaiyun.com/nie2314550441/article/details/106066834 《重建二叉树》https://blog.youkuaiyun.com/nie2314550441/article/details/106088108 二、题目 一:从上往下打印出二叉树的每个节点,不含空节点。 二:从上往下打印出二叉树的每个节点。包.

行走 509

从上往下打印二叉树【c++】《剑指offer》

从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路 本题即二叉树的层序遍历; 例如: 我们可以借助队列,利用其先进先出的性质来满足层序遍历。 先将二叉树的根节点放入队列,遍历根节点,存入result中,根节点出队列;若根节点的左右子结点存在,则将左右子结点依次存入队列的末尾;接着遍历左子结点,左子结点出队列,若左子结点存在孩子结点,同样依次存入队列的末尾...

a7_aaaaa的博客 212

从上往下打印二叉树——JS和CPP

从上往下打印出二叉树的每个节点,同层节点从左至右打印。 利用对列先进先出的特点来对二叉树节点进行依次遍历 JavaScript版本 /* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ function PrintFromTopToBottom(root) {...

Jane_96的博客 372

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

题目:从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印,例如图,则依次打印出8,6,10,5,7,9,11. 分析:在学习数据结构的时候,我们学习了二叉树的三种遍历方式:前序,中序,后续遍历,可是没有一种是可以像题目中所要求的打印方式,这就要用到辅助工具了,我们知道队列是一个先进先出的的结构,我们用队列就可以很容易的解决这个题目,下面直接对代码进行解析: #include

lqgzfl的专栏 2191

九度OJ-题目1523:从上往下打印二叉树

题目链接地址: 九度OJ-题目1523:从上往下打印二叉树 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行一个整数n(1 Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。 Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号

蜗牛 907
上一篇: c++实现---从上往下打印二叉树
下一篇: c++实现---之字形打印二叉树
codeFizz
博客等级 码龄9年 10粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值