当前位置:网站首页>Luogu p5018 [noip2018 popularization group] symmetric binary tree problem solution
Luogu p5018 [noip2018 popularization group] symmetric binary tree problem solution
2022-07-03 14:27:00 【q779】
Luogu P5018 [NOIP2018 Popularization group ] Symmetric binary tree Answer key
Topic link :P5018 [NOIP2018 Popularization group ] Symmetric binary tree
The question :
If a rooted tree with some weight meets the following conditions , Is called symmetric binary tree by Xuanxuan :
- Binary tree ;
- Swap the left and right subtrees of all nodes of this tree , The structure of the corresponding position of the new tree and the original tree is the same and the point weight is equal .
The number in the node in the figure below is the weight , Out of node i d id id Indicates the node number .
Now give a binary tree , I hope you find a subtree of it , The subtree is a symmetric binary tree , And the number of nodes most . Please output the number of nodes of this subtree .
Be careful : A tree with only its roots is also a symmetric binary tree . It is agreed in this question , To the node T T T A tree that is the root of a child tree “ Son Trees ” refer to : node T T T And all its descendant nodes .
【 Data scale and agreement 】
common 25 25 25 A test point .
v i ≤ 1000 v_i ≤ 1000 vi≤1000.
Test point 1 ∼ 3 , n ≤ 10 1 \sim 3, n ≤ 10 1∼3,n≤10, Ensure that all nodes of the left subtree of the root node have no right children , Right of root node All nodes of the subtree have no left children .
Test point 4 ∼ 8 , n ≤ 10 4 \sim 8, n ≤ 10 4∼8,n≤10.
Test point 9 ∼ 12 , n ≤ 1 0 5 9 \sim 12, n ≤ 10^5 9∼12,n≤105, Ensure that the input is a “ Full binary tree ” .
Test point 13 ∼ 16 , n ≤ 1 0 5 13 \sim 16, n ≤ 10^5 13∼16,n≤105, Ensure that the input is a “ Perfect binary tree ”.
Test point 17 ∼ 20 , n ≤ 1 0 5 17 \sim 20, n ≤ 10^5 17∼20,n≤105, Ensure that the point weight of the input tree is 1 1 1.
Test point 21 ∼ 25 , n ≤ 1 0 6 21 \sim 25, n ≤ 10^6 21∼25,n≤106.
For every point of direct violence dfs Its left and right subtrees can be judged
Pay attention to the direction of symmetry and don't write it wrong
Time complexity O ( n log n ) O(n \log n) O(nlogn)
Why won't the chain get stuck , Because the intermediate judgment is equivalent to pruning off
Only the complete binary tree will arrive O ( n log n ) O(n \log n) O(nlogn)
Code :
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)(1e6+15)
int n,ch[N][2],val[N],sz[N];
#define ls(x) ch[x][0]
#define rs(x) ch[x][1]
void dfs(int u)
{
sz[u]=1;
if(ls(u)!=-1)
{
dfs(ls(u));
sz[u]+=sz[ls(u)];
}
if(rs(u)!=-1)
{
dfs(rs(u));
sz[u]+=sz[rs(u)];
}
}
bool solve(int u,int v)
{
if(u==-1&&v==-1)return 1;
if(u==-1||v==-1)return 0;
return val[u]==val[v]&&solve(ls(u),rs(v))&&solve(rs(u),ls(v));
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
cin >> n;
for(int i=1; i<=n; i++)
cin >> val[i];
for(int i=1; i<=n; i++)
cin >> ls(i) >> rs(i);
dfs(1);
int ans=0;
for(int i=1; i<=n; i++)
if(solve(ls(i),rs(i)))
ans=max(ans,sz[i]);
cout << ans << '\n';
return 0;
}
Reprint please explain the source
边栏推荐
- Protobuf and grpc
- Solr series of full-text search engines - basic principles of full-text search
- 天谋科技 Timecho 完成近亿元人民币天使轮融资,打造工业物联网原生时序数据库
- 洛谷P5536 【XR-3】核心城市 题解
- 添加Zabbix计算类型项目Calculated items
- Find specified characters
- 常见问题之PHP——ldap_add(): Add: Undefined attribute type in
- puzzle(016.3)千丝万缕
- 剑指 Offer 28. 对称的二叉树
- Too many files with unapproved license
猜你喜欢

7-11 calculation of residential water charges by sections

Four data flows and cases of grpc

puzzle(016.3)千丝万缕

7-15 calculation of PI
![洛谷P5018 [NOIP2018 普及组] 对称二叉树 题解](/img/89/da1a3a38e02671628f385de0f30369.png)
洛谷P5018 [NOIP2018 普及组] 对称二叉树 题解

7-18 finding the single root of polynomial by dichotomy

牛客网:过河卒

泰凌冲刺科创板:拟募资13亿 国家大基金与小米长江是股东

Sub GHz wireless solution Z-Wave 800 Series zg23 SOC and zgm230s modules

Leetcode(4)——寻找两个正序数组的中位数
随机推荐
Exercise 6-2 using functions to sum special A-string sequences
Comprehensive evaluation of good-looking, easy-to-use and powerful handwriting note taking software: notability, goodnotes, marginnote, handwriting, notes writers, collanote, collanote, prodrafts, not
愉悦资本新双币基金近40亿元完成首次关账
【北大青鸟昌平校区】互联网行业中,哪些岗位越老越吃香?
x86汇编语言-从实模式到保护模式 笔记
虽然不一定最优秀,但一定是最努力的!
Protobuf and grpc
NFT new opportunity, multimedia NFT aggregation platform okaleido will be launched soon
Interface for querying IP home
Exercise 8-2 calculate the sum and difference of two numbers
数学常数表 by q779
Accelerating strategy learning using parallel differentiable simulation
Exercise 10-2 recursive factorial sum
puzzle(016.3)千丝万缕
Exercise 10-1 calculate the sum of 1 to n using recursive functions
Sword finger offer 28 Symmetric binary tree
【7.3】146. LRU缓存机制
Similarities and differences between Allegro, OrCAD, net alias, port, off page connector and how to select them
Paper sharing: generating playful palettes from images
修改数据库中的记录为什么报这个错