对称二叉树

2023-11-04

这是蒟蒻认真写的第一篇题解,如有欠缺,请理解

题目描述

一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树:

1、二叉树;

2、将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。

下图中节点内的数字为权值,节点外的 i d id id表示节点编号。

Alt
现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。

注意:只有树根的树也是对称二叉树。本题中约定,以节点为 T T T子树根的一棵“子树”指的是:节点 T T T和它的全部后代节点构成的二叉树。

输入格式
第一行一个正整数 n n n,表示给定的树的节点的数目,规定节点编号 1 ∼ n 1\sim n 1n,其中节点 1 1 1输入格式
第一行一个正整数,表示给定的树的节点的数目,规定节点编号,其中节点是树根。

第二行 n n n个正整数,用一个空格分隔,第 i i i个正整数 v [ i ] v[i] v[i]代表节点 i i i的权值。

接下来 n n n行,每行两个正整数 l [ i ] , r [ i ] l[i],r[i] l[i],r[i],分别表示节点 i i i的左右孩子的编号。如果不存在左 / 右孩子,则以 − 1 -1 1表示。两个数之间用一个空格隔开。是树根。

第二行个正整数,用一个空格分隔,第个正整数代表节点的权值。

接下来行,每行两个正整数,分别表示节点的左右孩子的编号。如果不存在左 / 右孩子,则以表示。两个数之间用一个空格隔开。

样例

【输入样例 1】

2
1 3
2 -1
-1 -1

【输出样例 1】

1

【输入样例 2】

10
2 2 5 5 5 5 4 4 2 3
9 10
-1 -1
-1 -1
-1 -1
-1 -1
-1 2
3 4
5 6
-1 -1
7 8

【输出样例 2】

3

数据范围与提示

【输入输出样例 1 说明】

Alt
最大的对称二叉子树为以节点为 2 2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对称二叉树 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • go: 配置 vim 高亮插件

    在早期的 golang 源代码包里面是有 vim 插件的 但是呢 到了1 4的源码包的时候 就删除了 vim 插件 所以我们需要从 1 3 3 版本的代码中获得 vim配置 一 官网下载 可以从 golang 官网 Downloads Th
  • date到期(逾期)提醒的逻辑分析,例如快到一年提前一个月提醒

    需求 如快到一年时 提前一个月进行提醒 伪代码 create date x expire date 过期的肯定不用管 expire date m tip date tip date 就是提示开始的时间 所以这个sql大概应该这么写 crea
  • 解决由于已经达到 MaxReports 限制,没有写入 apport 报告的错误

    解决由于已经达到 MaxReports 限制 没有写入 apport 报告的错误 现将info文件夹更名 sudo mv var lib dpkg info var lib dpkg info old 再新建一个新的info文件夹 sudo
  • 初识Qt,几种写界面的方法

    1 我们可以直接在新建项目中选择Application中的Qt Widgets Application 此时Qt会为我们直接生成 ui文件 以及对应得 h头文件 cpp源文件 那么我们需要做的就只是在ui的设计下添加一些我们想让界面拥有的东
  • 重置或修改系统(Linux/windows/宝塔)密码

    一 linux忘记密码 3步重置root密码 虚拟机多了之后 root密码就不好记住了 忘了密还有这种方法修改哦 1 在启动项界面按 e 进入修改页面 2 找到linux16这一行 在末尾添加 rd break 3 再按Ctrl X进入单用
  • 浏览器中输入url请求之后发生的事情?

    一 浏览器查找域名的IP地址 1 请求一旦发起 比如 www baidu com 浏览器第一件事就是 解析这个域名 浏览器先查看本地硬盘的hosts文件 看看其中有没有和这个域名对应的规则 如果有的话 就直接使用hosts文件里面的ip地址
  • Java Excel导出复杂excel表格样式之ExcelUtil工具类

    Java Excel导出包括普通导出及复杂表格样式 主要是对于需要进行行列合并的列进行特殊处理 计算清楚起始行 结束行 起始列 结束列 普通导出可以是所有列 也可以是包含某些列 或者排除某些列 1 效果图 2 原理 如对于上图中的覆盖能力
  • java 文件拷贝的四种方式

    1 java 移动文件的方式有几种 在 Java 中 可以使用多种方法来移动文件 使用 java nio file Files 类的 move 方法 import java nio file Files import java nio fi
  • 1. AJAX: 2. JSON

    内容 1 AJAX 2 JSON AJAX 1 概念 ASynchronous JavaScript And XML 异步的JavaScript 和 XML 1 异步和同步 客户端和服务器端相互通信的基础上 客户端必须等待服务器端的响应 在
  • Android RecyclerView实现树形列表

    前段时间公司有个项目 需要展示客户关系的树形列表 当时网上找了一些资料 有些觉得挺复杂的 有些测试下来有bug 最终决定自己解决 最底下有demo 需要源码的同学可以下载 效果图 带节点的展开与收缩 并且可以实现项的单选 选中项字体为蓝色
  • Mac office 字体和字号显示问题

    Sierra英文的操作系统 word的没有常见的 宋体 等字体选项 而且字号的单位只有磅数 这时可以通过修改word默认的编辑语言解决 打开word的偏好设置 点击 East Asian Language 选择下拉菜单中的中文选项 重启之后
  • UPF learning4: supply power network 相关

    Supply network包含了下面3种元素 supply nets 电线 supply ports 插座 和power switch 开关 create supply port 创建一根电源 create supply net 创建一根
  • android 启动过程中如何清理cache,android 开发过程中涉及到的清除缓存操作

    标签 android 开发过程中会遇到很多缓存 常常使人摸不清楚 这里总结一下 希望下次遇到缓存相关问题能有所帮助 Clean Project 在这里插入图片描述 其中执行 clean 时会找到根项目和所有子项目的 clean task 所
  • 通过Maven命令创建Web项目

    1 创建Web项目 mvn archetype create DgroupId com demo 项目组标识 DartifactId omss 项目名称 DarchetypeArtifactId maven archetype webapp
  • 火爆全网的chat GPT 在煤矿智能问答方面的应用

    测试了19个煤矿智能化 综采方面的问题 甚至会自己写代码 看看chatGPT表现如何 什么是智能化煤矿 什么是记忆割煤 目前记忆割煤都存在哪些问题 煤矿数字孪生技术可以用哪些开源的应用来实现 智能化煤矿未来可以发展到什么程度 提供煤矿智能化
  • git仓库规范

    多人协作 项目名称 demo 我的名字 kk 1 前置概念 主目录 develop 开发目录 dev 主分支 develop demo 开发分支 dev demo kk 2 主目录 develop 该目录下可以有很多项目的分支 dev目录下
  • AI三大主义:符号主义、联结主义、行为主义

    一 符号主义 symbolicism 符号主义 symbolicism 逻辑主义 Logicism 心理学派 Psychlogism 计算机学派 Computerism 其原理主要为物理符号系统 即符号操作系统 假设和有限合理性原理 早期的
  • 【C#基础详解】(十四)面向对象 继承

    面向过程 优点 性能比面向对象高 因为类调用时需要实例化 开销比较大 比较消耗资源 比如单片机 嵌入式开发 Linux Unix等一般采用面向过程开发 性能是最重要的因素 缺点 没有面向对象易维护 易复用 易扩展 面向对象 面向对象的三个核
  • Zabbix安装时出现缺少PHP模块,解决过程

    我在安装时PHP缺少gettext模块和bcmath模块 一下为解决步骤 1 进入到PHP源码包目录下的ext目录 cd soft php 5 3 13 ext 2 会看到ext目录下有gettext目录和bcmath目录 3 进入gett
  • 对称二叉树

    这是蒟蒻认真写的第一篇题解 如有欠缺 请理解 题目描述 一棵有点权的有根树如果满足以下条件 则被轩轩称为对称二叉树 1 二叉树 2 将这棵树所有节点的左右子树交换 新树和原树对应位置的结构相同且点权相等 下图中节点内的数字为权值 节点外的