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

控制台图形化打印二叉树(c/c++) 用c/c++实现的控制台图形化打印二叉树 阅读详情

从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题目抽象:给出一颗二叉树,按照从上到下,从左到右的顺序遍历节点。也就是从上到下一层一层的遍历。
方法:层次遍历
借鉴牛客大神的思路,层次遍历借助队列先进先出的特性来实现。所以做题总结出层次遍历的模板,后续就很简单了。
这道题就是一个模板题,对队列的使用。因为要满足先进先出的特性。
1.初始化:一个队列queue<TreeNode*> q, 将root节点入队列q
2.如果队列不空,做如下操作:
3.弹出队列头,保存为node,将node的左右非空孩子加入队列
4.做2,3步骤,直到队列为空
如果不需要确定当前遍历到了哪一层,模板如下:

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)
            }
        }
    }
}

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

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<int> PrintFromTopToBottom(TreeNode* root) {
        vector<int> res;
        if(!root) return res;
        queue<TreeNode*> help;
        help.push(root);//根节点入队列
        while(!help.empty()){
            TreeNode * node=help.front();//先保存队列头节点
            help.pop();//队首元素出队列
            res.push_back(node->val);//出队列的元素压入vector
            if(node->left) help.push(node->left);//将出队列元素的非空左右子节点入队列
            if(node->right) help.push(node->right);
        }
        return res;
    }
};
c++二叉树打印(只为美观) 文章目录先上效果图然后上代码测试用例:思路写在最后 先上效果图 然后上代码 /** * 中序遍历返回节点数组 * @param root 根节点 * @return 中序遍历节点数组 */ std::vector<TreeNode *> inorderTraversal(TreeNode *root) { std::vector<TreeNode *> res; std::stack<TreeNode *> stk; w 阅读详情

相关推荐

C++ 图形化 打印二叉树

代码如下 #include<iostream> #include<queue> using namespace std; class node { public: node(int n, bool color_type=true) :val(n), color(color_type),left(nullptr),right(nullptr),parent(nullptr) {}; int val; node* left; node* right; node* parent

qq_24447809的博客 2516

构建一颗二叉树,并将其打印出来(c++实现)

求树的深度打印树感觉太繁琐了,直接拿去用就行,不需要知道细节。

qq_37795916的博客 2970

c++二叉树的建立与打印

在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在出度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为 ,深度为2的结点数为 ,则 = + 1。

C++打印完全二叉树

思路:完全二叉树可以采用数组顺序存储,而且除最后一层外其余各层都是满的。则可以采用逆序打印的方式,先确定最底层的节点位置及数目,进而确定其上各层的节点位置。 打印效果 代码实现 #include<iostream> #include<stdlib.h> #include<string> #include<vector> #include<cmath> #include<time.h> #include<exceptio

daimashiren的博客 1152

NOAA气象数据下载攻略

各方搜寻气象数据下载途径,发现网上最多的就是从NOAA下载,但是中途有尝试过很多次都没有下载到,每次都是显示不可用,今天终于下载成功了,特此记录。 首先我是从这个网址进入的:National Centers for Environmental Information (NCEI) formerly known as National Climatic Data Center (NCDC) | NCEI offers access to the most significant archives of oc

lianqian66的博客 3万+

USB-Blaster在Win11报错?3分钟搞定驱动兼容性问题(Quartus 21.4实测)

本文针对Windows 11系统下USB-Blaster驱动安装问题,提供了一套快速解决方案。通过优化驱动安装流程、绕过签名验证及设备管理器高级技巧,帮助开发者在3分钟内解决Quartus 21.4的兼容性问题,提升FPGA调试效率。

weixin_30772105的博客 293

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

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

Jeaten 364

[RK3568][Android11.0]Vold-DiskInfo:区分u盘和硬盘

测试平台 Platform: RK3568 OS: Android 11.0 需求描述 目前系统内部设备没有对硬盘(sata/usb移动硬盘)和u盘做区分,统一显示的为usb存储设备.目前有需求要在显示上有所区分。 解决方案 如何区分移动硬盘和U盘,见Android usb设备的检测及区分(sata硬盘、优盘及移动硬盘).主要就是检测removeable值,为0:硬盘,为1:u盘 解决补丁如下 From 572cf35c07f68c5cb5defe40c536dd9ad1b4648e Mon Sep 17

weixin_39966398的博客 1897

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

题目描述:给定一颗二叉树,从左到右从上到下打印二叉树。要求是要按层换行。 方法:层次遍历打印二叉树,用队列实现。本题是上一篇的变形,区别就是这个需要考虑到层数。 首先复习一下模板: 如果不需要确定当前遍历到了哪一层,模板如下: void bfs() { vis[] = 0; queue<int> pq(start_val); while (!pq.empty()) { int cur = pq.front(); pq.pop(); for

Fizz6018的博客 329

手把手教你用RMII接口配置以太网PHY芯片(附YT8512实战代码)

本文详细介绍了如何使用RMII接口配置以太网PHY芯片,以国产YT8512为例,提供从硬件设计到软件驱动的全流程实战指南。内容包括RMII接口技术解析、YT8512硬件设计要点、驱动开发实战代码及常见问题排查,帮助开发者快速实现以太网通信功能。

mac99的博客 996

ECU-TEST 快速入门

ECU-TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具。自从2003年首次发布ECU-TEST ,该软件成为了汽车ECU开发的标准工具 ,同时也逐步成为了重型机械和工业自动化开发的标准工具 。该软件是起源自于一个控制单元的系统化测试的项目研究,从而为从德累斯顿工业大学脱离出来的TraceTronic公司奠定了基础。ECU-TEST旨在完成测试案例的规范化、评估、求解和归档。得益于该软件包含大量的自动化测试方法使得测试案例的所有必要功能如创建、求解和评估

wangying202的博客 1万+

剑指Offer JZ22 从上往下打印二叉树 C++实现

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路 方法一:层次遍历 1、思路:层次遍历二叉树。 2、代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: vector&lt

weixin_41020287的博客 202

基于LLM【M3】驱动的自动化攻击智能体AK(受控使用)

摘要:文章实测了基于大模型的目标驱动型云攻击智能体,展示攻击者仅需输入业务目标(如"窃取BigQuery数据")即可自动完成SSRF、令牌解析、数据导出等全链条攻击。研究发现:(1)攻击编排范式已从固定脚本升级为自适应路径;(2)传统基于IOC的防御与新型攻击存在结构性错位;(3)防御需转向元数据加固、跨服务行为序列检测和AI驱动的紫队演练。实验在授权靶场使用合成数据,验证了攻击智能体"监督者模型+专业执行组"的协作模式,强调防御体系需从单点检测升级为攻击链理解能力。

云上笛暮 307

剑指offer32(1,2,3)--从上往下打印二叉树,分行从上往下打印二叉树,按之字形顺序打印二叉树——java/C++实现

从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 层序遍历,用到队列 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { ...

wake_alone 271

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 7248

高通平台WIFI学习-- WCN7851 三频 2X2 MIMO DBS HBS Wi-Fi 7介绍

WCN7851是支持Wi-Fi 7和蓝牙5.4的三频SoC芯片,具有以下核心特性:采用NSP334封装,支持2.4GHz/5GHz/6GHz三频段并发操作,最高速率达5.8Gbps;集成MU-MIMO、4096QAM调制技术,6GHz频段支持320MHz带宽;提供PCIe Gen3接口和低功耗设计,兼容多种无线标准。电气特性包括1.8V/1.2V可编程GPIO、76.8MHz时钟源要求,以及详细的射频性能参数。该芯片通过多链路操作和动态频率选择等先进功能,实现高性能无线连接。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1280

剑指offer第二十二题【从上往下打印二叉树】c++实现

从上往下打印二叉树 参与人数:2132时间限制:1秒空间限制:32768K通过比例:24.75%最佳记录:0 ms|8552K(来自  。着…) 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 这道题就是层序遍历,我用的队列。 vector PrintFromTopToBottom(TreeNode *root) { queue que;

u011692312的专栏 379

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【剑指offer 面试题23】从上往下打印二叉树

思路:   没啥好说的,BFS。 C++: 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 5 struct TreeNode { 6 int val; 7 TreeNode *left; 8 TreeNode *right;...

weixin_30295091的博客 61

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

weixin_37725502的博客 3585

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

qq_43676757的博客 845

剑指offer66题--Java实现,c++实现和python实现 22.从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 C++ /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution ...

一个有梦想的小码农的博客 193

剑指Offer - 从上往下打印二叉树 (C++)

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:层次遍历二叉树,用队列即可 C++ /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }...

m0_38024592的博客 232

从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ c

Sunburst的专栏 716

JZ22 从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解:从上往下打印,同层从左至右,这就是一个典型的树层遍历。层遍历可以通过队列的入队出队性质来进行打印。具体实现代码如下: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { p

pikaqiu_n95的博客 160

剑指Offer刷题(从上往下打印二叉树)

剑指Offer刷题(从上往下打印二叉树)一.题目描述二.代码(C++)三.提交记录四.备注 一.题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 二.代码(C++) /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { publ

Umbraner的博客 180
上一篇: c++实现---栈的压入、弹出序列
下一篇: c++实现---多行从上往下打印二叉树
codeFizz
博客等级 码龄9年 10粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值