博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P5018-对称二叉树
阅读量:5232 次
发布时间:2019-06-14

本文共 1987 字,大约阅读时间需要 6 分钟。

1 #include 
2 #define _for(i,a,b) for(int i = (a);i < b;i ++) 3 typedef long long ll; 4 using namespace std; 5 int N; 6 int vallist[1000003]; 7 int stlist[2][1000003]; 8 int rnt = 1; 9 inline ll read()10 {11 ll ans = 0;12 char ch = getchar(), last = ' ';13 while(!isdigit(ch)) last = ch, ch = getchar();14 while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();15 if(last == '-') ans = -ans;16 return ans;17 }18 inline void write(ll x)19 {20 if(x < 0) x = -x, putchar('-');21 if(x >= 10) write(x / 10);22 putchar(x % 10 + '0');23 }24 struct TreeNode25 {26 int val;27 TreeNode *left;28 TreeNode *right;29 };30 TreeNode* build(int cur)31 {32 TreeNode* t = (TreeNode*)malloc(sizeof(TreeNode));33 t->val = vallist[cur];34 if(stlist[0][cur]==-1)35 t->left = NULL;36 else37 t->left = build(stlist[0][cur]-1);38 if(stlist[1][cur]==-1)39 t->right = NULL;40 else41 t->right = build(stlist[1][cur]-1);42 return t;43 }44 bool same(TreeNode* root1,TreeNode* root2)45 {46 if(!root1&&!root2)47 return true;48 if(!root1||!root2)49 return false;50 if(root1->val!=root2->val)51 return false;52 return same(root1->left,root2->right) && same(root1->right,root2->left);53 }54 int count(TreeNode* root)55 {56 if(!root)57 return 0;58 int k1 = count(root->left);59 int k2 = count(root->right);60 return k1+k2+1;61 }62 void f(TreeNode* root)63 {64 if(!root)65 return ;66 f(root->left);67 f(root->right);68 if(same(root,root))69 rnt = max(rnt,count(root));70 }71 int main()72 {73 TreeNode* root;74 N = read();75 _for(i,0,N)76 vallist[i] = read();77 _for(i,0,N)78 _for(j,0,2)79 stlist[j][i] = read();80 root = build(0);81 f(root);82 write(rnt);83 return 0;84 }

 

转载于:https://www.cnblogs.com/Asurudo/p/11289975.html

你可能感兴趣的文章
总结 清除浮动的四种常见方法
查看>>
《30天自制操作系统》实现中文显示
查看>>
Swift 烧脑体操(二) - 函数的参数
查看>>
iOS 9 Safari广告拦截插件
查看>>
JavaScript 对象
查看>>
《剑指offer》第五十七题(为s的连续正数序列)
查看>>
javascript input只输入数字和字母
查看>>
Kafka体系架构
查看>>
1. spring boot起步之Hello World【从零开始学Spring Boot】
查看>>
淘宝产品抓取实战
查看>>
Hi java新特性
查看>>
JMS Session session = connection.createSession(paramA,paramB) 两个参数不同组合下的含义和区别...
查看>>
Eclipse下加载Android SDK源码
查看>>
Python 3 Mysql 增删改查
查看>>
iOS xcuserdata
查看>>
洛谷 P1583 魔法照片
查看>>
【软件构造】第五章
查看>>
第十章 关联容器(下)
查看>>
ORACLE日常操作手册
查看>>
java 的sigola orm 的开发,第一次学写java,可以用在play上面
查看>>