zoukankan      html  css  js  c++  java
  • 二叉树4(天平问题)

    二叉树的深度遍历

    输入一个树状天平,根据力矩相等原则判断是否平衡。平衡输出YES,否则输出NO。所谓力矩相等,就是,其中和分别为左右两边砝码的重量,D为距离。

    采用递归(先序)方式输入:每个天平的格式为,,,,当或为0时,表示该“砝码”实际是一个子天平,接下来会描述这个子天平。当时,会先描述左子天平,然后是右子天平。

    例如输入:

    0 2 0 4

    0 3 0 1

    1 1 1 1

    2 4 4 2

    1 6 3 2

    输出:

    YES

    #include"iostream"
    using namespace std;
    struct Tree{
        int data,edge;
        Tree *left;
        Tree *right;
    };
    void tree(Tree* &t,int data,int edge){
        t = new Tree;
        t->data = data;
        t->edge = edge;
        t->left = NULL;
        t->right = NULL;
    }
    void createTree(Tree* &t){
        int datal,datar,edge;
        cin>>datal>>edge;
        tree(t->left,datal,edge);
        cin>>datar>>edge;
        tree(t->right,datar,edge);
        if(datal == 0){
            createTree(t->left);
        }
        if(datar == 0){
            createTree(t->right);
        }
    }
    int torque(Tree *t){
        if(t->right==NULL){
            return t->data;
        }
        else if(t){
            int l = torque(t->left);
            int r = torque(t->right);
            if(l && r && r * t->right->edge == l * t->left->edge){
                return r + l;
            }
        }
        return 0;
    }
    int main(){
        Tree *t = new Tree;
        tree(t,0,0);
        createTree(t);
        if(torque(t)){
            cout<<"YES"<<endl;
        }
        else{
            cout<<"NO"<<endl;
        }
        return 0;
    }
    
    /*
    0 2 0 4
    0 3 0 1
    1 1 1 1
    2 4 4 2
    1 6 3 2
    
    */
  • 相关阅读:
    chkconfig命令
    Office 2010 与搜狗输入法兼容问题
    【转】WAS入门简介
    UTF8GB2312GBK
    System.getProperty
    Hibernate 事务方法保存clob类型数据
    Eclipse 或者 Myeclipse 提示选择工作空间设置
    request
    那些操蛋的人生
    Java新手入门很重要的几个基本概念
  • 原文地址:https://www.cnblogs.com/oleolema/p/9028447.html
Copyright © 2011-2022 走看看