洛谷 P5018 对称二叉树
题目传送门
解题思路:
先计算每个点的子树有多少节点,然后判断每个子树是不是对称的,更新答案。
AC代码:
#include<iostream>
#include<cstdio> using namespace std; struct kkk{
int l,r,v,len;
kkk() {l = -;r = -;}
}e[];
int n,ans; bool solve(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 & solve(e[ls].l,e[rs].r);
if(e[ls].r != - && e[rs].l != -)
p = p & solve(e[ls].r,e[rs].l);
return p;
} 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;
} 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(solve(e[i].l,e[i].r))
ans = max(ans,e[i].len);
printf("%d",ans);
return ;
}
//NOIP普及2018 T4
洛谷 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 对称二叉树(搜索)
嗯... 题目链接:https://www.luogu.org/problem/P5018 其实这道题直接搜索就可以搜满分: 首先递归把每个点作为根节点的儿子的数量初始化出来,然后看这个节点作为根节点 ...
- 【洛谷P5018 对称二叉树】
话说这图也太大了吧 这题十分的简单,我们可以用两个指针指向左右两个对称的东西,然后比较就行了 复杂度O(n*logn) #include<bits/stdc++.h> using name ...
- 2021.08.09 P5018 对称二叉树(树形结构)
2021.08.09 P5018 对称二叉树(树形结构) [P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求一棵子树,关 ...
- 【洛谷P5018】对称二叉树
题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小. 代码如下 #include <bits/stdc++.h> using ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
- [洛谷P1040] 加分二叉树
洛谷题目链接:加分二叉树 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,-,n),其中数字1,2,3,-,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di ...
随机推荐
- 创建一个简单的Spring应用
环境已经安装完成,接下来创建一个简单的Spring应用. 创建Spring应用步骤: 创建一个maven项目 添加spring库依赖 创建Bean类 添加Bean的xml装配文件 创建主类 运行应用程 ...
- Java Web学生信息保存
Course.javapackage entity; public class Course { private int id; private String num; private String ...
- StarUML 3.0.2安装激活
文章参考:https://blog.csdn.net/sam_shan/article/details/80585240 1.下载StarUML:http://staruml.io/,一直下一步安装. ...
- mongodb安装到配置问题
一.所有问题 Xshell 连接不上 报错类型:Could not connect to '192.168.122.1' (port 22): Connection failed.原因:IP地址未生成 ...
- mariadb主从
实验环境: 两台centos7 master:192.168.1.6 slave:192.168.1.7 一.安装mariadb服务 [root@master ~]# yum -y install m ...
- promise核心6 自定义promise
1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6 也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...
- Codeforces Round #599 (Div. 2) Tile Painting
题意:就是给你一个n,然后如果 n mod | i - j | == 0 并且 | i - j |>1 的话,那么i 和 j 就是同一种颜色,问你最大有多少种颜色? 思路: 比赛的时候,看到 ...
- FZU_1683 矩阵快速幂 求和
这个题目确实是很简单的一个矩阵快速幂,但是我在求和的时候,用的是标准的求和,即,一共计算logN次Ak,但是这样会超时. 后来就发现原来本身和Sn=Sn-1+Fn:即Sn本身可以写在矩阵当中,所以直接 ...
- i春秋-web-爆破-1
题目内容:flag就在某六位变量中. 题目 include "flag.php"; $a = @$_REQUEST['hello']; if(!preg_match('/^\w*$ ...
- PPT |《Kubernetes的兴起》
京东云开发者社区技术沙龙--<Cloud Native时代的应用之路与开源创新> Part1-<Kubernetes的兴起> 欢迎点击"链接"了解更多精彩内 ...