uva 839

原创 2015年11月20日 19:15:38

题目大意:
用树模拟天平。判断是否平衡。

思路:
输入的时候要是第一个数字或第三个数字为0的话就表示说他们还有左子树或右子树,如果不为0就是NULL,就利用这种方法建树,然后判断他们是否平衡t->Dl *t->Wl是否等于 t->Dr *t->Wr,不平衡就可以置标记为false,如果等于零的话就递归。

#include <iostream>
using namespace std;

struct Node
{
    int Wl;
    int Dl;
    int Wr;
    int Dr;
    Node *left;
    Node *right;
};
bool ok;
Node * build()  //递归建树
{
    Node *root = new Node();
    scanf("%d%d%d%d", &root->Wl, &root->Dl,&root->Wr,&root->Dr);
    if (root->Wl == 0)
        root->left = build();
    else
        root->left = NULL;
    if (root->Wr == 0)
        root->right = build();
    else
        root->right = NULL;
    return root;
}
/*void rmTree(Node *&root)
{
    if (root == NULL) {
        return;
    }
    else {
        rmTree(root->left);
        rmTree(root->right);
        delete root;
        root = NULL;
    }
}*/
int Judge(Node * t)
{
    if (ok == false)
        return 0;
    if (t->Wl == 0)
        t->Wl = Judge(t->left);
    if (t->Wr == 0)
        t->Wr = Judge(t->right);
    if (t->Dl *t->Wl != t->Dr *t->Wr)
        ok = false;
    //return (t->Dl *t->Wl + t->Dr *t->Wr); 
    return  (t->Wl + t->Wr);
}
int main()
{
    int n;
    cin >> n;

    while (n--)
    {   
        ok = true;
        Node * root = new Node;
        root = build(); 
        Judge(root);
        if (ok)
            printf("YES\n");
        else
            printf("NO\n");
        //rmTree(root);
        if (n) printf("\n");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

题意  判断一个树状天平是否平衡   每个测试样例每行4个数  wl,dl,wr,dr  当wl*dl=wr*dr时  视为这个天平平衡  当wl或wr等于0是  下一行将是一个子天平  如果子天平平...
  • acvay
  • acvay
  • 2014年09月24日 09:17
  • 1162

Uva - 839 - Not so Mobile

Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wi...

UVA 839 天平

之前WA两次的原因:数组开的不够大。。。。 先建二叉树,我采用的数组存储方式 再后序遍历比较是否平衡 //WA:数组开的不够大。。。。。 #include #include #includ...
  • cfzjxz
  • cfzjxz
  • 2012年07月23日 09:30
  • 376

UVA839 Not so Mobile【二叉树】【递归】

题目大意:给你一个树形的天平,如图所示,根据力矩相等原则判断是否相等。 注意:输入的时候采用(先序)输入,如果WL为0时,该天平有左子天平,接下来 描述这个左子天平,如果WR为0时,该天平有有右子天平...

例题6-9 天平 UVa 839 递归

Not soMobile  Before being an ubiquous communications gadget, amobile was just a structure made of ...

UVa839-Not so Mobile (天平)

UVa839-Not so Mobile (天平) 输入一个树状天平,根据力矩相等原则判断是否平衡。所谓力矩相等,就是W1D1=W2D2,其中W1,W2分别为左右两边砝码的重量,D为距离。  采用递归...

UVa 839 Not so Mobile (DFS二叉树)

839 - Not so Mobile Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=com_onl...

uva839解题报告

题目大意就是根据干杠平衡原理,判断题目所给出的数据组成的天平能否平衡。注意,此天平可能包含子天平。输入时,如果w为0,则表示包含子天平,子天平按照先左后右的方法输入。 解题思路: 这是二叉树的问题,...
  • WU5151
  • WU5151
  • 2015年12月30日 16:30
  • 336

uva 839 - Not so Mobile

Not so Mobile  Before being an ubiquous communications gadget, a mobile was just a struct...

紫书章六例题九 天平 UVA 839(更新二叉树的节点上的值)

题意:输入一个树状天平,看是否都符合力矩相等。递归输入每个节点(天平)。第一种是用指针来建树,然后逐步向上更新判断#include #include #include #include #in...
  • bllsll
  • bllsll
  • 2017年04月15日 15:23
  • 129
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:uva 839
举报原因:
原因补充:

(最多只允许输入30个字)