C++二叉树一(练习题)
二叉树的深度-层序遍历法【描述】给定一棵二叉树 要求用层序遍历的方式求该二叉树的深度。二叉树深度的定义 从根结点到最远叶结点依次经过的结点个数含根、叶结点。【输入描述】第一行是一个整数 n 表示二叉树的结点个数。 二叉树结点编号从 1到 n 根结点为 1 n 10 。接下来有 n 行 依次对应二叉树的 n 个结点。 每行有两个整数 分别表示该结点的左儿子和右儿子的结点编号。 如果第一个第二个 数为-1 则表示没有左右 儿子。【输出描述】输出一个整型数 表示树的深度。【输入样例】32 3-1 -1-1 -1【输出样例】2【输入样例】72 73 64 5-1 -1-1 -1-1 -1-1 -1【输出样例】4#includeiostream#includequeueusingnamespacestd;structtree_node{intls,rs;//ls:左孩子结点编号rs右孩子结点编号intdepth;//深度};tree_node tree[11];queueintq;// 为了节约空间队列中只保存树的编号intn;intans;//深度最大值voidbfs(){// 根结点编号1入队tree[1].depth1;q.push(1);while(!q.empty()){intidq.front();q.pop();intdepthtree[id].depth;ansmax(ans,depth);//更新深度最大值// 先左后右子结点编号入队if(tree[id].ls!-1){tree[tree[id].ls].depthdepth1;//设置左子节点的深度q.push(tree[id].ls);}if(tree[id].rs!-1){tree[tree[id].rs].depthdepth1;//设置右子节点的深度q.push(tree[id].rs);}}}intmain(){// 读入和保存树cinn;for(inti1;in;i)cintree[i].lstree[i].rs;// 从根结点开始层序遍历bfs();// 输出coutansendl;return0;}/* 本题测试点 【样例输入1】 1 -1 -1 【样例输出1】 1 【样例输入2】 7 2 3 4 5 6 7 -1 -1 -1 -1 -1 -1 -1 -1 【样例输出2】 3 【样例输入3】 4 2 -1 3 -1 4 -1 -1 -1 【样例输出3】 4 【样例输入4】 6 2 3 4 5 -1 -1 6 -1 -1 -1 -1 -1 【样例输出4】 4 【样例输入5】 4 -1 2 -1 3 -1 4 -1 -1 【样例输出5】 4 */GESP202406 六级第二题 【二叉树】【描述】小杨有一棵包含几个节点的二叉树且根节点的编号为1。这棵二叉树任意一个节点要么是白色要么是黑色。之后小杨会对这棵二叉树进行q次操作每次小杨会选择一个节点将以这个节点为根的子树内所有节点的颜色反转,即黑色变成白色白色变成黑色。小杨想知道q次操作全部完成之后每个节点的颜色。【输入描述】第一行一个正整数n表示二叉树的节点数量。第二行n-1个正整数第i(1in-1)个数表示编号为i1的节点的父亲节点编号数据保证是一棵二叉树。第三行一个长度为n的01串从左到右第i(1≤in)位如果为0表示编号为i的节点颜色为白色否则为黑色。第四行一个正整数q表示操作次数。接下来q行每行一个正整数 a_i(1a_i≤n)表示第i次操作选择的节点编号。【输出描述】输出一行一个长度为n的 01串表示q次操作全部完成之后每个节点的颜色。从左到右第i(1i≤n)位如果为0表示编号为i的节点颜色为白色否则为黑色。【输入样例】63 1 1 3 41001013132【输出样例】010000#includeiostreamusingnamespacestd;#defineLEN100000structtree_node{intson[2];//子结点编号intvalue;};tree_node tree[LEN];intn,times;chartmp[LEN];//操作以rootid为根的所有结点值翻转voidprocess(introotid){if(rootid0)return;//空节点不处理tree[rootid].value1-tree[rootid].value;//0-1,1-0process(tree[rootid].son[0]);process(tree[rootid].son[1]);}intmain(){// 读入和保存树cinn;for(inti1;in-1;i){intid;cinid;if(tree[id].son[0]0)tree[id].son[0]i1;elsetree[id].son[1]i1;}cintmp;for(inti0;in;i){tree[i1].valuetmp[i]-0;}cintimes;//操作次数for(inti1;itimes;i){intid;cinid;process(id);}//输出for(inti1;in;i){couttree[i].value;}return0;}/* 本题测试点 【样例输入1】 6 3 1 1 3 4 100101 3 1 3 2 【样例输出1】 010000 【样例输入2】 4 1 2 3 0000 3 1 2 1 【样例输出2】 0111 【样例输入3】 7 1 1 2 2 3 3 1111111 2 2 3 【样例输出3】 1000000 【样例输入4】 1 0 2 1 1 【样例输出4】 0 */二叉树的宽度【描述】给定一棵二叉树 求该二叉树的宽度。二叉树宽度的定义 是指具有节点数目最多的那一层的节点个数即所有层中节点数的最大值。【输入描述】第一行是一个整数 n 表示二叉树的结点个数。 二叉树结点编号从 1到 n 根结点为 1 n 10 。接下来有 n 行 依次对应二叉树的 n 个结点。每行有两个整数 分别表示该结点的左儿子和右儿子的结点编号。 如果第一个第二个 数为-1 则表示没有左右儿子。【输出描述】输出一个整型数 表示树的宽度。【输入样例】32 3-1 -1-1 -1【输出样例】2【输入样例】72 73 64 5-1 -1-1 -1-1 -1-1 -1【输出样例】2【提示】使用队列逐层遍历统计每层节点数最大值就是树的宽度。#includeiostream#includequeueusingnamespacestd;structtree_node{intls,rs;//ls:左孩子结点编号rs右孩子结点编号intdepth;//深度 即层号};tree_node tree[11];queueintq;// 为了节约空间队列中只保存树的编号intn;intwidth[11];// 层宽度数组第i层宽度width[i]voidbfs(){// 根结点编号1入队tree[1].depth1;//根节点在第1层q.push(1);while(!q.empty()){intidq.front();q.pop();//按层统计宽度intdepthtree[id].depth;width[depth];// 先左后右非空子结点编号入队if(tree[id].ls!-1){tree[tree[id].ls].depthdepth1;//设置左子节点的深度q.push(tree[id].ls);}if(tree[id].rs!-1){tree[tree[id].rs].depthdepth1;//设置右子节点的深度q.push(tree[id].rs);}}}intmain(){// 读入和保存树cinn;for(inti1;in;i)cintree[i].lstree[i].rs;// 从根结点开始层序遍历bfs();// 找到宽度最大值并输出intmax_width0;for(inti1;in;i)max_widthmax(max_width,width[i]);coutmax_widthendl;return0;}/* 本题测试点 【样例输入1】 1 -1 -1 【样例输出1】 1 【样例输入2】 7 2 3 4 5 6 7 -1 -1 -1 -1 -1 -1 -1 -1 【样例输出2】 4 【样例输入3】 4 2 -1 3 -1 4 -1 -1 -1 【样例输出3】 1 【样例输入4】 4 -1 2 -1 3 -1 4 -1 -1 【样例输出4】 1 【样例输入5】 6 2 3 4 5 6 -1 -1 -1 -1 -1 -1 -1 【样例输出5】 3 */二叉树的权值【描述】给定一棵包含 N 个节点的完全二叉树树上每个节点都有一个权值按从上到下、从左到右的顺序依次是 A1,A2,…,AN如下图所示:现在小明要把相同深度的节点的权值加在一起他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大请你输出其中最小的深度。注:根的深度是 1。【输入描述】第一行包含一个整数 N。第二行包含 N 个整数 A1,A2,…,AN。【输出描述】输出一个整数代表答案。【输入样例】71 6 5 4 3 2 1【输出样例】2对于所有评测用例1≤ N 10^5,0 |Ai| 10^5【提示】完全二叉树的第k层有2^k个结点(第一层k0)因此可以通过计数的方式在枚举数组的同时分别累计每个深度的结点数量。一旦某一层累加的结点数足够了就记录并比较大小然后初始化各个数据重新再累加计算。#includeiostream#includecmathusingnamespacestd;intmain(){intn;cinn;intcnt0,k0,sum0,ans0,ans20;//cnt计数k控制每一层是2的几次方个sum求和ans1记录最大值ans2记录深度for(inti0;in;i){intx;cinx;cnt;sumx;if(cntpow(2,i)||in-1){//计数2^k个或者累加到了最后一个结点cnt0;k;if(sumans){anssum;ans2k;}sum0;}}coutans2endl;return0;}/* 本题测试点 【样例输入1】 1 5 【样例输出1】 1 【样例输入2】 2 3 4 【样例输出2】 2 【样例输入3】 3 1 2 3 【样例输出3】 2 【样例输入4】 5 1 1 1 5 5 【样例输出4】 3 【样例输入5】 3 4 5 6 【样例输出5】 2 */

相关新闻

STM32CubeMX配置LTDC

STM32CubeMX配置LTDC

如何解决这个问题,求助大佬

2026/10/15 16:56:30 阅读更多 →
【软考】2021年信息安全工程师案例分析真题与答案完整版(下午案例分析题)

【软考】2021年信息安全工程师案例分析真题与答案完整版(下午案例分析题)

**2021年信息安全工程师案例分析真题与答案完整版(下午题)**1、试题一(共20分)阅读下列说明和图,回答问题1至问题5,将解答填入答题纸的对应栏内。 【说明】在某政府单位信息中心工作的李工要负责网站的设计…

2026/10/15 18:24:59 阅读更多 →
Windows平台Makefile构建指南:MSYS2、NMake与WSL三种方案详解

Windows平台Makefile构建指南:MSYS2、NMake与WSL三种方案详解

1. 为什么在Windows上折腾Makefile是个技术活如果你是从Linux或macOS转战Windows的开发者,第一次在Windows上尝试运行一个开源项目的make命令时,大概率会收获一个冰冷的错误提示:“‘make’不是内部或外部命令,也不是可运行的程序…

2026/10/15 17:51:52 阅读更多 →

最新新闻

VSCode配置Anaconda全指南:解决Python解释器与conda环境问题

VSCode配置Anaconda全指南:解决Python解释器与conda环境问题

配过的人都有体会——Anaconda装了,VSCode也装了,结果新建一个Python文件,import numpy直接给你飘红,运行的时候又说找不到模块。这时候大多数人第一个想法是“Anaconda没装好”“VSCode坏了”,但真正的原因往往是VSCo…

2026/10/16 17:55:24 阅读更多 →
分布式存储选型与落地:Ceph、HDFS、GlusterFS、MinIO对比与避坑指南

分布式存储选型与落地:Ceph、HDFS、GlusterFS、MinIO对比与避坑指南

简介:一份关于主流分布式存储技术的综述文档,适合大数据处理、云计算及后端存储方向的开发者与架构师阅读。内容以架构与演化两条主线展开,系统梳理了谷歌文件系统、Hadoop分布式文件系统、Minio对象存储等经典方案的设计思想与适用场景。压缩…

2026/10/16 17:55:24 阅读更多 →
Matlab图像拼接实战:SIFT特征匹配+RANSAC单应估计+多频带融合

Matlab图像拼接实战:SIFT特征匹配+RANSAC单应估计+多频带融合

简介:本资源是一套基于Matlab实现的SIFT特征匹配与RANSAC鲁棒估计相结合的图像拼接与融合完整方案,面向计算机视觉初学者、图像处理课程学习者及科研入门人员,解决多视角图像自动对齐、宽视场全景图生成等典型问题。压缩包共20个文件&#xf…

2026/10/16 17:55:24 阅读更多 →
用Python爬虫打造自动化SEO巡检工具:从TDK提取到反爬避坑

用Python爬虫打造自动化SEO巡检工具:从TDK提取到反爬避坑

简介:面向网站优化人员与Python学习者的SEO数据采集与分析工具,以“SEO网络蜘蛛侠”命名,通过自动化爬虫帮助用户完成关键词挖掘、元信息检查、链接结构分析、内容质量与加载速度检测、死链排查等高频SEO任务。程序内置可执行版本&#xff0c…

2026/10/16 17:55:24 阅读更多 →
Python快速可视化SEG-Y地震数据:三步实现剖面绘制与批量抽检

Python快速可视化SEG-Y地震数据:三步实现剖面绘制与批量抽检

简介:这份资源面向地质勘探、地震预测与环境监测领域的技术人员及Qt开发者,提供一套基于Qt3.3框架的地震数据快速可视化实现方案,重点解决大规模地震记录的读取、处理与图形化展示问题。压缩包共77个文件,约2.07MB,以h…

2026/10/16 17:55:23 阅读更多 →
Android应用目录结构全解析:从Gradle配置到资源文件管理

Android应用目录结构全解析:从Gradle配置到资源文件管理

很多刚接触Android开发的朋友,第一次用Android Studio新建项目时,看到左侧那一大坨目录树往往会有点懵。我当年也是从一个个文件夹点开、再关掉,折腾了好几天才搞清楚哪个目录是存代码的、哪个目录是放图片的、哪个文件是注册Activity的。这篇…

2026/10/16 17:54:23 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →