天平

本文介绍了一个使用递归方法来判断二叉树是否平衡的C++实现。通过传值变量和递归遍历的方式,检查每个节点的左右子树是否满足平衡条件。此算法适用于需要验证二叉树平衡性的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
bool solve(int& W) {
  int W1, D1, W2, D2; 
  bool b1 = true, b2 = true;//先初始化成TRUE 
  cin >> W1 >> D1 >> W2 >> D2;
  if(!W1) b1 = solve(W1);//如果W1为0则递归左子树 
  if(!W2) b2 = solve(W2);//如果W1为0则递归右子树,如果W1=W2=0则先遍历左子树然后遍历右子树 
  W = W1 + W2; 
  return b1 && b2 && (W1 * D1 == W2 * D2);//三个都为true则输出yes 
}

int main() {
  int T, W;//
  cin >> T;
  while(T--) {
    if(solve(W)) cout << "YES\n"; else cout << "NO\n";//W只是个传值变量 
    if(T) cout << "\n";
  }
  return 0;
}
/*
总结:
本题的精彩之处使用了传值变量,考察了二叉树的递归遍历。
函数solve的最后是联合判断return,只有三个都为true才输出yes。 
*/ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值