首页 > 代码库 > Not so Mobile UVA 839
Not so Mobile UVA 839
说说:
还是简单的二叉树遍历的题目。这道题不过是将一棵树的左右子树作为杠杆。若存在左子树于相应距离的乘积和右子树相应距离的乘积不等,或者说不平衡,则输出NO。全部平衡,则整棵树平衡,输出YES。解法的话,递归判断即可。
源代码:
#include <stdio.h> int mobile(int*); int main(){ int T,w; //freopen("data","r",stdin); scanf("%d",&T); while(T--){ if(mobile(&w)) printf("YES\n"); else printf("NO\n"); if(T) putchar('\n'); } return 0; } int mobile(int *w){ int wl,wr; int dl,dr; int r1,r2; scanf("%d%d%d%d",&wl,&dl,&wr,&dr); r1=r2=1;//注意要先赋值 if(wl==0) r1=mobile(&wl); if(wr==0) r2=mobile(&wr); *w=wl+wr;//子树的总重量 if(wl*dl!=wr*dr||!r1||!r2)//本身或左右子树不平衡,则不平衡 return 0; else return 1; }
Not so Mobile UVA 839
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。