二叉樹的遞歸遍歷 天平UVa839
阿新 • • 發佈:2017-07-27
代碼 -- stdio.h 入參 解題思路 sin while -1 code
題意:輸入一個樹狀的天平,利用杠桿原理,根據力矩是否相等(W1D1==W1D2)判斷天平是否平衡
解題思路:1.由於判斷天平是否平衡,當W1和W2都為0的時候,會先輸入左子樹,再輸入右子樹
2.此時的W1和W2會變成子樹的重量之和,此時最好用到引用(同時改變傳入參數的值)
3.遞歸的輸入,並且判斷子天平是否平衡
代碼如下:
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 bool input(int &W){ //引用,改變傳入參數的值 5 int W1,W2,D1,D2;6 int b1=true; 7 int b2=true; 8 scanf("%d%d%d%d",&W1,&D1,&W2,&D2); 9 if(W1==0){ //先左再右 10 b1=input(W1); 11 } 12 if(W2==0){ 13 b2=input(W2); 14 } 15 W=W1+W2; 16 return b1&&b2&&(W1*D1==W2*D2); 17 } 18 int main(){19 freopen("in.txt","r",stdin) 20 int n,w; 21 scanf("%d",&n); 22 while(n--){ 23 if(input(w)) 24 printf("YES\n"); 25 else 26 printf("NO\n"); 27 if(n) 28 printf("\n"); 29 } 30 return 0; 31 }
二叉樹的遞歸遍歷 天平UVa839