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;
}