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

记录
1:17 2023-5-19

https://onlinejudge.org/external/8/p839.pdf

reference:《算法竞赛入门经典第二版》例题6-7

二叉树的层次遍历,非常纳闷。我觉得只要一个子树不是平衡的,那么结果就肯定是不平衡的,所以我在判断到一个子树不平衡就返回了。这样是不对的,不知道什么时候我能明白。


10:07 2023-5-19
算了没想明白,这种利用递归遍历判断的,都进行判断吧。

#include<cstdio>
#include<iostream>
#include<sstream>
#define MAX_N 10000
using namespace std;
typedef long long ll;
typedef unsigned int uint;
const int INF = 0x3f3f3f3f;

int T;

bool solve(int &W) {
    int WL, DL, WR, DR;
    cin >> WL >> DL >> WR >> DR;
    // if(WL == 0) {
    //     if(!solve(WL)) return false;
        
    // }
    // if(WR == 0) {
    //     if(!solve(WR)) return false;
    // }

    bool b1 = true, b2 = true;
    if(WL == 0) b1 = solve(WL);
    if(WR == 0) b2 = solve(WR);
    W = WL + WR;
    // if(WL * DL == WR * DR) {
    //     return true;
    // } else {
    //     return false;
    // }
    return b1 && b2 && (WL * DL == WR * DR);
}

int main() {
    int W;
    cin >> T;
    while (T--) {
        W = 0;
        if(solve(W))  cout << "YES\n";
        else  cout << "NO\n";
        if(T) cout << "\n";
    }
    return 0;
}

posted @ 2023-05-19 01:22  57one  阅读(7)  评论(0编辑  收藏  举报