洛谷 P5018 对称二叉树(搜索)
嗯...
题目链接:https://www.luogu.org/problem/P5018
其实这道题直接搜索就可以搜满分:
首先递归把每个点作为根节点的儿子的数量初始化出来,然后看这个节点作为根节点的那棵子树是不是对称的,然后在对称的子树中记录最大值。
AC代码:
#include<cstdio>
#include<iostream> using namespace std; struct node{
int l, r, v, len;
node() {l = -; r = -;}
} e[]; int n, ans; inline int dfs(int k){
e[k].len = ;
if(e[k].l != -) e[k].len += dfs(e[k].l);
if(e[k].r != -) e[k].len += dfs(e[k].r);
return e[k].len;
}//初始化子树大小 inline bool check(int ls, int rs){
bool p = ;
if(e[ls].v != e[rs].v) return false;
if((e[ls].l != - && e[rs].r == -) || (e[ls].l == - && e[rs].r != -) || (e[ls].r != - && e[rs].l == -) || (e[ls].r == - && e[rs].l != -)) return false;
if(e[ls].l != - && e[rs].r != -) p = p & check(e[ls].l, e[rs].r);
if(e[ls].r != - && e[rs].l != -) p = p & check(e[ls].r, e[rs].l);
return p;
}//判断是否对称 int main(){
scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%d", &e[i].v);
for(int i = ; i <= n; i++) scanf("%d%d", &e[i].l, &e[i].r);
dfs();
for(int i = ; i <= n; i++)
if(check(e[i].l, e[i].r)) ans = max(ans, e[i].len);
printf("%d\n", ans);
return ;
}
AC代码
洛谷 P5018 对称二叉树(搜索)的更多相关文章
- 洛谷P5018 对称二叉树——hash
给一手链接 https://www.luogu.com.cn/problem/P5018 这道题其实就是用hash水过去的,我们维护两个hash 一个是先左子树后右子树的h1 一个是先右子树后左子树的 ...
- 洛谷P5018 对称二叉树
不多扯题目 直接题解= = 1.递归 由题目可以得知,子树既可以是根节点和叶节点组成,也可以是一个节点,题意中的对称二叉子树是必须由一个根节点一直到树的最底部所组成的树. 这样一来就简单了,我们很容易 ...
- NOIP2018普及T4暨洛谷P5018 对称二叉树题解
题目链接:https://www.luogu.org/problemnew/show/P5018 花絮:这道题真的比历年的t4都简单的多呀,而且本蒟蒻做得出t4做不出t3呜呜呜... 这道题可以是一只 ...
- 【洛谷P5018 对称二叉树】
话说这图也太大了吧 这题十分的简单,我们可以用两个指针指向左右两个对称的东西,然后比较就行了 复杂度O(n*logn) #include<bits/stdc++.h> using name ...
- 洛谷 P5018 对称二叉树
题目传送门 解题思路: 先计算每个点的子树有多少节点,然后判断每个子树是不是对称的,更新答案. AC代码: #include<iostream> #include<cstdio> ...
- 2021.08.09 P5018 对称二叉树(树形结构)
2021.08.09 P5018 对称二叉树(树形结构) [P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求一棵子树,关 ...
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- 【洛谷P5018】对称二叉树
题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小. 代码如下 #include <bits/stdc++.h> using ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
随机推荐
- ORA_12514:TNS:listener does not currently know of service requested in connect descriptor
问题描述 ORA_12514:TNS:listener does not currently know of service requested in connect descriptor 解决方式 ...
- SCRIPT429: Automation 服务器不能创建对象
安全模式设置成“中”,如果javascript脚本中报这个错误,应将IE的安全设置“不允许运行未标记为安全的activeX控件”启用即可. 注意如果您将相应的网站设成“受信任的站点”,必须对“受信任的 ...
- 参考 ZTree 加载大数据量。加载慢问题解析
参考 ZTree 加载大数据量. 1.一次性加载大数据量加载说明 1).zTree v3.x 针对大数据量一次性加载进行了更深入的优化,实现了延迟加载功能,即不展开的节点不创建子节点的 DOM. 2) ...
- Unity中引入Supersocket.ClientEngine并测试
在使用Supersocket Server的过程中,发现Server是不支持.net 3.5的. 1.Server端中的几个Command: namespace SuperSocketProtoSer ...
- SuperSocket与SuperSocket.ClientEngine实现Protobuf协议
参考资料说明 SuperSocket文档 http://docs.supersocket.net/ Protobuf语言参考 https://developers.google.com/protoco ...
- protobuf-net简单使用
第一个测试的proto文件 syntax = "proto3"; package ProtoMsg; message Foo { ; int32 id = ; repeated b ...
- 两个map合并
两个map合并所用函数为:putAll package myProject; import java.util.HashMap; import java.util.Map; public class ...
- Virtual Judge POJ 3278 Catch That Cow
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- win10显示“没有有效的IP地址”
可能你没有新建该宽带连接!!!(本人就是蠢到如此地步了_(:з)∠)_)
- dea创建Maven工程用c3p0连接数据库报错java.sql.SQLException: Connections could not be acquired from the underlying
idea java.sql.SQLException: Connections could not be acquired from the underlying database! 转载自:ht ...