二叉树的递归遍历 天平UVa839

Posted 木子丘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的递归遍历 天平UVa839相关的知识,希望对你有一定的参考价值。

题意:输入一个树状的天平,利用杠杆原理,根据力矩是否相等(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的主要内容,如果未能解决你的问题,请参考以下文章

Uva 839天平(二叉树dfs, 递归建树)

Uva--839 Not so Mobile(二叉树的递归遍历)

二叉树的递归遍历 The Falling Leaves UVa 699

UVa 839 天平

UVa 839 -- Not so Mobile(树的递归输入)

UVa839 Not so Mobile (二叉树的DFS)