日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PJ2018T4 对称二叉树 树形结构

發布時間:2025/3/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PJ2018T4 对称二叉树 树形结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:現在給出一棵二叉樹,希望你找出它的一棵子樹,該子樹為對稱二叉樹,且節點數最多。請輸出這棵子樹的節點數。對稱二叉樹滿足:將這棵樹所有節點的左右子樹交換后,新樹和原樹對應位置的結構相同且點權相等。

(注意輸入的是當前節點的左兒子和右兒子,若輸入-1則表示該位置不存在點)

?

數據范圍:n <= 1000000.

------------------------------------------我是分割線------------------------------------

題解: 首先預處理每棵子樹的大小,用size[x]表示x的子樹大小,接下來直接枚舉每個點檢驗即可,非常簡單。

?

#include<bits/stdc++.h>#define ll long long #define mp make_pair #define rep(i, a, b) for(int i = (a); i <= (b); i++) #define per(i, a, b) for(int i = (a); i >= (b); i--)using namespace std;typedef pair<int, int> pii; typedef double db; const int N = 1e6 + 50; int n, head[N], cnt = 0, a[N]; int size[N], f[N], lson[N], rson[N]; int ans; inline int read(){int x = 0, f = 1;char ch = getchar();while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar();}while(ch >='0' && ch <='9') { x = (x<<3)+(x<<1)+(ch^48); ch = getchar();}return x*f; } void init(){n = read();rep(i, 1, n) a[i] = read();rep(i, 1, n) {lson[i] = read(); rson[i] = read();} } void dfs(int x){size[x] = 1;if(lson[x] != -1){dfs(lson[x]);size[x] += size[lson[x]];}if(rson[x] != -1){dfs(rson[x]);size[x] += size[rson[x]];}return; } bool check(int u, int v){if(u == -1 && v == -1) return true;if(u != -1 && v != -1 && a[u] == a[v] && check(lson[u], rson[v]) && check(rson[u], lson[v]))return true;return false; } void work(){dfs(1); rep(i, 1, n) {if(check(lson[i], rson[i]))ans = max(ans, size[i]);}printf("%d\n", ans); } int main(){init();work();return 0; } View Code

?

(刷水題不是我的本意,愉悅身心才是我的真正目的qwq).

?

轉載于:https://www.cnblogs.com/smilke/p/11580523.html

總結

以上是生活随笔為你收集整理的PJ2018T4 对称二叉树 树形结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。