noip2018_d1t4对称二叉树(搜索)
Posted passion-sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noip2018_d1t4对称二叉树(搜索)相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <cctype> using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch==‘-‘) f=-1;ch=getchar();} while (isdigit(ch)){x=x*10+ch-48;ch=getchar();} return x*f; } int n,son[1000050][2],val[1000050],size[1000050]; //son[i][0]为i的左儿子 //son[i][1]为i的右儿子 inline void dfs(int u) { size[u]=1; if (son[u][0]!=-1) { dfs(son[u][0]); size[u]+=size[son[u][0]]; } if (son[u][1]!=-1) { dfs(son[u][1]); size[u]+=size[son[u][1]]; } } inline bool check(int u,int v) { if (u==-1 && v==-1) return true; if (u!=-1 && v!=-1 && val[u]==val[v] && check(son[u][0],son[v][1]) && check(son[u][1],son[v][0])) return true; return false; } int main() { n=read(); for (int i=1;i<=n;i++) val[i]=read(); for (int i=1;i<=n;i++) { son[i][0]=read(); son[i][1]=read(); } dfs(1); int ans=0; for (int i=1;i<=n;i++) if (check(son[i][0],son[i][1])) ans=max(ans,size[i]); cout << ans << endl; return 0; }
以上是关于noip2018_d1t4对称二叉树(搜索)的主要内容,如果未能解决你的问题,请参考以下文章
[Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解
2021-10-05:对称二叉树。给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。力扣101。