[NOIP2018 PJ T4]对称二叉树】的更多相关文章

题目大意:问一棵有根带权二叉树中最大的对称二叉树子树,对称二叉树为需满足将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 题解:在对称二叉树中,对于深度相同的两个节点$u,v$,必定有$ls(u)=rs(v)$,$rs(u=ls(v)$,并且$val(u)=val(v)$,对每个点跑一遍深搜就可以了.发现跑一个点最多遍历它子树中较少的一棵子树.复杂度为$O(n\log_2n)$ 卡点:无 C++ Code: #include <iostream> #define max…
P5018 [NOIP2018 普及组] 对称二叉树 题目 P5018 思路 通过hash值来判断左右树是否相等 \(hl[i]\) 与 \(Hl[i]\) 是防止hash冲突, \(r\) 同理 注意,在 \(hl,hr\) 计算的时候大质数的顺序 \(hash\) 过程中会出现非常大的数字 常见的孪生质数: \(1e9+7,1e9+9\) 问题 此题为什么不能使用自然溢出解决? CPP #include <bits/stdc++.h> //#define int long long #de…
2021.08.09 P5018 对称二叉树(树形结构) [P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求一棵子树,关于该子树根节点轴对称的节点数最大. 分析: 暴力. 代码如下: 40tps #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int N=1e6+10; in…
题目描述 一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树: 二叉树: 将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 下图中节点内的数字为权值,节点外的 id 表示节点编号. 现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多.请输出这棵子树的节点数. 注意:只有树根的树也是对称二叉树.本题中约定,以节点 T 为子树根的一棵"子树"指的是:节点 T 和它的全部后代节点构成的二叉树. 输入 第一行一个正整数 n,表示给定的树…
啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip CSP也快要开始了,想在这里写下这篇题解,仅以此篇献给当时的自己和以后的OI路. 正文开始: T1:标题统计 题面: 首先简化一下题目--给定一个仅含大 小写字母,数字,与空格的长度不超过5的字符串,求去掉空格后还有几个字符 Noip惯例,第一题依旧是签到题,但是考了字符串,要是不懂关于字符串的输入…
NOIp2018 pj 滚粗记 考前 一个午觉睡完就到了考场 考中 \(T1\)水题切了 \(T2\)水题切了 \(T3\)好像是\(dp\),不会,先跳 \(T4\)像树上莫队一样,然后再欧拉序上面哈希就行了 然后很舒服的过了样例 \(T3\)调了\(1.5h\) \(dp\)还是萎了 \(T2\)离下考\(5min\)才发现过不了样例,幸好还是改出来了 考后 发现\(T4\)是伪的... 那怎么过得大样例啊?\(ggf\)我xxx 完啦滚粗了,希望\(tg\) \(day2\) \(rp++…
对称二叉树,就是左节点的左节点等于右节点的右节点,左节点的右节点等于右节点的左节点. 很自然就想到迭代与递归,可以创建一个新的函数,就是另一个函数不断的判断,返回在主函数. class Solution { public boolean isSymmetric(TreeNode root) { if(root == null) { return true; } else return test(root.left,root.right); } public boolean test(TreeNo…
101. 对称二叉树 (1过) 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 说明: 如果你可以运用递归和迭代两种方法解决这个问题,会很加分. 我的层次遍历: 注意由于下列情况null-3-null-3的存在,和一般的树的层次不一样: 1   / \  2   2   \   \…
题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=1e6+10; struct node{ int l,r,size,val; }t[maxn]; int n,ans; void read_and_parse(){ scanf("%d",&n); for(int i=1…
对称二叉树的含义非常容易理解,左右子树关于根节点对称,具体来讲,对于一颗对称二叉树的每一颗子树,以穿过根节点的直线为对称轴,左边子树的左节点=右边子树的右节点,左边子树的右节点=左边子树的左节点.所以对称二叉树的定义是针对一棵树,而判断的操作是针对节点,这时可以采取由上到下的顺序,从根节点依次向下判断,只需要重复调用函数,不需要回溯.具体代码如下. class TreeNode: def __init__(self, x): self.val = x self.left = None self.…