~~~cpp
bool check(int x,int y)
{
if(x==-1&&y==-1)return true;
if(qz[x]!=qz[y])return false;
return check(rs[x],ls[y])&&check(ls[x],rs[y]);
}
~~~
by ttklwxx @ 2018-11-11 21:51:55
递归
一个节点要满足
它的l和r节点要对称
那么l的l要和r的r对称,l的r要和r的l对称
同时满足就可以了
```
bool check(int x,int y){
if((t[x].cnt==1)&&(t[y].cnt==1))return t[x].v==t[y].v;
if((t[x].cnt!=t[y].cnt)||(t[x].vtot!=t[y].vtot))return false;
return check(t[x].l,t[y].r)&check(t[x].r,t[y].l);
}
```
by gzh01 @ 2018-11-11 21:52:21
但这是$O(N^2)$啊...
by xhhkwy @ 2018-11-11 21:54:28
@[xhhkwy](/space/show?uid=96592) 你确定吗
by ttklwxx @ 2018-11-11 21:54:58
@[董鲤鱼烧](/space/show?uid=65309) 你还要枚举每一个点啊..
by xhhkwy @ 2018-11-11 22:27:32
听某提高神犇说是马拉车+中序遍历
by 氷芽川四糸乃 @ 2018-11-11 22:54:03
@[xhhkwy](/space/show?uid=96592) 可以证明,这样复杂度为O(nlogn),不信你构一组卡掉试试?
by 1124828077ccj @ 2018-11-14 21:17:35