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
    
    */
  • 相关阅读:
    过去式和过去进行式
    现在式和现在进行式
    英文文法的最基本规则
    Vue 标签中的ref属性和refs
    APICloud
    小程序
    React 传值 组件传值 之间的关系
    css clip样式 属性功能及作用
    小程序点击预览 为什么显示空白
    小程序
  • 原文地址:https://www.cnblogs.com/oleolema/p/9028447.html
Copyright © 2011-2022 走看看