原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=780

先建立二叉树,之后遍历。

 #include<iostream>
using namespace std; struct Node
{
int W1, D1, W2, D2;
Node *left;
Node *right;
}; bool flag; Node* creatTree()
{
Node* root = new Node;
cin >> root->W1 >> root->D1 >> root->W2 >> root->D2;
if (root->W1 == ) root->left = creatTree();
else root->left = NULL;
if (root->W2 == ) root->right = creatTree();
else root->right = NULL;
return root;
} int balance(Node* root)
{
if (flag == false) return ;
if (root->W1 == ) root->W1 = balance(root->left);
if (root->W2 == ) root->W2 = balance(root->right);
if (root->W1*root->D1 != root->W2*root->D2) flag = false;
return(root->W1 + root->W2);
} void remove_tree(Node* u)
{
if (u == NULL) return;
remove_tree(u->left);
remove_tree(u->right);
delete u;
} int main()
{
int t;
cin >> t;
while (t--)
{
Node* root = NULL;
flag = true;
root=creatTree();
flag = true;
balance(root);
if (flag == true) cout << "YES" << endl;
else cout << "NO" << endl;
remove_tree(root);
if (t != ) cout << endl;
}
}

刘汝佳的书上给出了一个引用传值的简单的方法

 #include<iostream>
using namespace std; bool solve(int &W)
{
int W1, D1, W2, D2;
bool b1 = true, b2 = true;
cin >> W1 >> D1 >> W2 >> D2;
if (!W1) b1 = solve(W1);
if (!W2) b2 = solve(W2);
W = W1 + W2;
return b1&&b2 && (W1*D1 == W2*D2);
} int main()
{
int T, W;
cin >> T;
while (T--)
{
if (solve(W)) cout << "YES" << endl;
else cout << "NO" << endl;
if (T) cout << endl;
}
return ;
}

UVa 839 天平的更多相关文章

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

    题意: 给定一个天平长度 输入格式为 wl dl wr dr 分别代表天平左边长度,左边重量, 右边长度, 右边重量. 如果重量为0, 说明下面还有一个天平, 递归给出. 样例输入:10 2 0 40 ...

  2. UVA.839 Not so Mobile ( 二叉树 DFS)

    UVA.839 Not so Mobile ( 二叉树 DFS) 题意分析 给出一份天平,判断天平是否平衡. 一开始使用的是保存每个节点,节点存储着两边的质量和距离,但是一直是Runtime erro ...

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

    UVa 839 Not so Mobile(树的递归输入) 判断一个树状天平是否平衡,每个测试样例每行4个数 wl,dl,wr,dr,当wl*dl=wr*dr时,视为这个天平平衡,当wl或wr等于0是 ...

  4. 天平 (Not so Mobile UVA - 839)

    题目描述: 题目思路: 1.DFS建树 2.只有每个树的左右子树都平衡整颗树才平衡 #include <iostream> using namespace std; bool solve( ...

  5. UVa 1354 天平难题

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. Uva 839 Not so Mobile

    0.最后输出的yes no的大小写 1.注意 递归边界   一直到没有左右子树 即b1=b2=false的时候 才返回 是否 天平平衡. 2.注意重量是利用引用来传递的 #include <io ...

  7. UVa 839 (递归方式读取二叉树) Not so Mobile

    题意: 递归的方式输入一个树状天平(一个天平下面挂的不一定是砝码还可能是一个子天平),判断这个天平是否能满足平衡条件,即W1 * D1 == W2 * D2. 递归的方式处理输入数据感觉很巧妙,我虽然 ...

  8. UVA 839 (13.08.20)

     Not so Mobile  Before being an ubiquous communications gadget, a mobile wasjust a structure made of ...

  9. 【紫书】【重要】Not so Mobile UVA - 839 递归得漂亮

    题意:判断某个天平是否平衡,输入以递归方式给出. 题解:递归着输入,顺便将当前质量作为 &参数 维护一下,顺便再把是否平衡作为返回值传回去. 坑:最后一行不能多回车 附:天秀代码 #defin ...

随机推荐

  1. EL表达式中获取list长度

    在jsp页面中不能通过${list.size}取列表长度,而是 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pref ...

  2. WP8 学习 Onnavigatedto和OnnavigatedFrom的区别

    OnNavigatedTo:重写 OnNavigatedTo 方法以检查导航请求并且准备供显示的页面.这个方法就像是初始化(Ini) ,它先于Loaded事件之前被执行,所以在这里可以控制一些初始化前 ...

  3. Windows平台下的读写锁

    Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...

  4. 0xC0000005: 读取位置 0x00000000 时发生访问冲突

    遇见这种问题一般都是空指针,即:指针里没有赋值~ 如果你对null 进行操作就会产生空指针异常 Object obj = new Object(); 你要知道 obj是一个Object指针变量,指向O ...

  5. HTTPS Everywhere – 保障隐私和信息安全的利器

    HTTPS Everywhere 是一款 Chrome 扩展程序,对于支持 HTTPS 的网站默认打开 HTTPS 加密传输来保障信息安全(HTTPS 介绍). HTTPS Everywhere 受到 ...

  6. sql连接又一篇

    作者:初行 – 博客园 SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表:                                         stu表:       ...

  7. (转)iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    原文:http://blog.csdn.net/totogo2010/article/details/8048652 iOS应用程序生命周期(前后台切换,应用的各种状态)详解         分类:  ...

  8. Python mix-in 组合 ~ 将类组合起来 .

    在一个池塘中有10个乌龟 1 条鱼 . class Turtle: def __init__(self,x): # 在生命对象的时候 说明对象的 数量 . (还是一个对象 . 数量只是该对象的一个属性 ...

  9. Some SQL basics

    1, Index An index is a set of data pointers stored on disk associated with a single table. The main ...

  10. Cocos2d-x 3.x项目创建

    1.首先打开终端,cd到cocos2d-x-3.2目录下,运行命令./setup.py 2. 首先,打开终端cd到目录/cocos2d-x-3.2/tools/cocos2d-console/bin下 ...