[LeetCode]2331. 计算布尔二叉树的值(递归)

布尔表达式递归解法                                  &n... 阅读详情

给你一棵 完整二叉树 的根,这棵树有以下特征:

  • 叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True 。
  • 非叶子节点 要么值为 2 要么值为 3 ,其中 2 表示逻辑或 OR ,3 表示逻辑与 AND 。

计算 一个节点的值方式如下:

  • 如果节点是个叶子节点,那么节点的 值 为它本身,即 True 或者 False 。
  • 否则,计算 两个孩子的节点值,然后将该节点的运算符对两个孩子值进行 运算 。

返回根节点 root 的布尔运算值。

完整二叉树 是每个节点有 0 个或者 2 个孩子的二叉树。

叶子节点 是没有孩子的节点。

示例 1:

输入:root = [2,1,3,null,null,0,1]
输出:true
解释:上图展示了计算过程。
AND 与运算节点的值为 False AND True = False 。
OR 运算节点的值为 True OR False = True 。
根节点的值为 True ,所以我们返回 true 。

示例 2:

输入:root = [0]
输出:false
解释:根节点是叶子节点,且值为 false,所以我们返回 false 。

提示:

  • 树中节点数目在 [1, 1000] 之间。
  • 0 <= Node.val <= 3
  • 每个节点的孩子数为 0 或 2 。
  • 叶子节点的值为 0 或 1 。
  • 非叶子节点的值为 2 或 3 。

思路:

根据题目要求,如果当前节点为叶子节点,那么节点的值为它本身;否则节点的值为两个孩子的节点值的逻辑运算结果。遇到树,我们一般想到递归,如果要计算出当前节点的布尔值,我们需要先计算出两个叶子节点组成的子树的布尔值,然后再计算出当前节点组成的子树的值。

C:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool evaluateTree(struct TreeNode* root){
        if(!root->left) return root->val;// 平凡树OR叶子结点
        if(root->val==2) return evaluateTree(root->left)||evaluateTree(root->right);//OR
        else return evaluateTree(root->left)&&evaluateTree(root->right);//AND
}

C++:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool evaluateTree(TreeNode* root) {
        if(!root->left) return root->val;//平凡树OR叶子结点
        if(root->val==2) return evaluateTree(root->left)||evaluateTree(root->right);//OR
        else return evaluateTree(root->left)&&evaluateTree(root->right);//AND
    }
};

 JAVA:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean evaluateTree(TreeNode root) {
        if(root.left == null) return root.val==1;//平凡树OR叶子结点
        if(root.val==2) return evaluateTree(root.left)||evaluateTree(root.right);//OR
        else return evaluateTree(root.left)&&evaluateTree(root.right);//AND
    }
}

python-leetcode-2331. 计算布尔二叉树的值 这个问题要求我们对给定的完整二叉树进行布尔运算,根节点的值是通过一系列逻辑运算(AND、OR)计算得到的。:值为0或1,表示False或True。:值为2或32表示逻辑 OR 运算符。3表示逻辑 AND 运算符。 阅读详情

相关推荐

企业老板管理者,如何监控员工的电脑屏幕?

老板监控员工电脑,需要知道员工开机后的上网行为来及时了解到员工工作情况,及时发现上班不良行为员工,及时淘汰低价值员工。 文章目录iMonitor EAM一、计算机系统日志二、具体功能介绍1.屏幕记录2.键盘记录总结 iMonitor EAM 怎么监控员工电脑,我们需要用到第三方软件,2021年最新版本软件-iMonitor EAM,软件分管理端和客户端,管理端在管理者电脑登录,客户端在员工电脑双击安装就可以,安装中不用任何设置的,客户端安装到员工电脑后也是隐藏的,不会有任何弹窗和警告信息,是无法发现和删

iMonitorSoft的博客 2179

【leetcode】树and递归

题目1 【简单】路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返

图像研究猿的专栏 311

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2912

带有bool返回值的递归

Validate Binary Search Tree Medium 1428 223 Favorite Share Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node co...

qq_38251888的博客 2029

基于UWB技术的自动跟随避障系统设计研究

基于UWB技术的自动跟随避障系统设计研究 摘要:目前我国针对自动跟随避障系统方面的研究较少,同时国内自动跟随避障系统仍然处在未成熟阶段,多数仍停留在应用蓝牙控制或摄像头捕捉这类跟随方式,但这类方式在实际应用过程中往往会出现易受干扰,精度差,易受环境干扰等问题,这不仅会降低自动跟随避障系统的性能,同时也会对用户造成诸多困扰。因此,就需要结合目前较为有效的UWB技术,对自动跟随避障系统进行设计。基于此,本文首先将会针对UWB技术展开概述,而后对基于UWB技术的自动跟随避障系统组成展开分析,进而对基于UWB技术的

qq_43543515的博客 7992

小智AI语音控制实战:从工具注册到音量调节的MCP交互全流程

本文详细拆解了基于小智AI与MCP协议实现本地智能语音控制的完整交互流程。以ESP32平台为例,从开发环境搭建、MCP服务器初始化、工具注册,到用户语音指令的接收、解析、硬件执行与结果反馈,提供了全链路实战代码。重点阐述了如何通过MCP协议将AI的意图理解与设备功能执行在本地高效耦合,实现毫秒级响应的音量调节等控制,为嵌入式AI开发者提供了清晰的实现路径。

weixin_29165725的博客 347

递归-二叉树中的深搜-2331.计算布尔二叉树的值-力扣(LeetCode)

个人主页:1白天的黑夜1-优快云博客专栏:力扣刷题录_1白天的黑夜1的博客-优快云博客、企鹅程序员:Linux 系统与网络编程_1白天的黑夜1的博客-优快云博客目录一、题目解析1、非叶子节点要么值为2代表||,要么值为3代表&&2、叶子节点要么值为1代表true,要么值为0代表false3、该二叉树属于完全二叉树,即只有2个或0个孩子节点4、计算根据非叶子节点代表的逻辑运算符对叶子节点进行逻辑运算二、算法原理解法:递归角度1:以宏观看待递归如何编写递归代码?1、重复子问题-设计函数头2、只关心某一个子

black_bear_white的博客 1336

彻底清理Easy Connect残留:从服务到驱动的完整卸载指南

在企业网络接入场景中,远程客户端常因内核驱动、系统服务和网络过滤组件导致卸载残留,进程无法结束、文件被锁定、注册表项顽固存在。其原理在于驱动挂载网络协议栈,服务守护进程,卸载时资源占用导致清理不彻底。彻底清理的技术价值在于恢复系统纯净、避免网络异常和软件冲突。典型应用场景包括企业办公机、个人笔记本更换或重装客户端。本文针对深信服Easy Connect,提供从停止服务、删除驱动到清理注册表和虚拟网卡的分步操作链路,并给出验证方法和避坑经验。

weixin_31292729的博客 240

LeetCode·每日一题·2331.计算布尔二叉树的值·递归

递归

m0_64560763的博客 173

筑基篇第9节:CUDA内存管理API进阶

CUDA多维内存管理与零拷贝技术 本文介绍了CUDA中高效处理多维数据的内存管理技术。对于二维数据,使用cudaMallocPitch可确保内存对齐访问,提升75%的带宽利用率;三维数据则通过cudaMalloc3D实现切片对齐。配套的cudaMemcpy2D/3D函数能高效处理数据拷贝。此外,零拷贝内存技术允许内核直接访问主机内存,避免显存拷贝开销。这些技术对图像处理、科学计算等应用至关重要,能显著提升多维数据处理的性能。

PeterPan的博客 82

基于Simulink的电机热阻模型建立与仿真

本文详细介绍了基于Simulink的电机热阻模型建立方法。通过将电机传热路径分解为5段关键热阻(绕组内部、槽绝缘、铁芯、机壳、冷却系统),采用Simscape Thermal模块构建热阻网络模型。重点阐述了参数化热阻计算、实验数据校准、不同设计方案对比等关键步骤,并以15kW车用PMSM为例演示建模过程。文章还分享了非线性热阻处理、多维网络构建等高级技巧,指出该模型在热设计迭代、散热匹配、故障诊断等方面的重要工程价值,为电机热安全设计提供了有效的数字化解决方案。

xiaoheshang_123的博客 336

力扣刷题——2331.计算布尔二叉树的值

如果要计算出当前节点 node 的值,我们需要先计算出两个叶子节点组成的子树的值分别为 lval 与 lval,然后再计算出当前节点组成的子树的值。AND 与运算节点的值为 False AND True = False。OR 运算节点的值为 True OR False = True。根节点的值为 True ,所以我们返回 true。上图展示了计算过程。

hxd030228的博客 428

SpringBoot 整合 Drools:从环境搭建到复杂业务落地,精通规则引擎实战指南

本文介绍了Drools规则引擎的基础概念及其与SpringBoot的整合方法。首先概述了规则引擎的核心价值,包括业务规则解耦、可维护性提升等。重点讲解了Drools的核心组件(规则、事实、会话等)及其工作原理。随后详细说明了在SpringBoot项目中集成Drools的步骤,包括添加依赖、配置自动加载规则文件、创建KieContainer等关键配置类。文章还提供了完整的DRL规则文件示例和SpringBoot集成配置代码,为开发人员提供了从理论到实践的完整指导。通过这种方式,可以轻松实现业务规则与系统代码的

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1432

Leetcode—2331.计算布尔二叉树的值【简单】

运行结果 运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

Atticus的博客 256

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

递归算法(2)——深度优先遍历(1)

欢迎来到博主的专栏:算法解析博主ID:代码小豪。

2301_77239666的博客 1085

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

leetcode 2331 计算布尔二叉树的值

由于存在重复子问题,所以可以采用递归来解决这个问题。evaluateTree函数用于返回root节点的值;如果节点为叶子节点,就返回其值(将int转成bool);<1>第一步,处理左子树,计算根节点的左孩子节点的值;<2>第二步,处理右子树,计算根节点的右孩子节点的值;<3>根据root的值对前面得到的两个结果进行或运算或者与运算,将结果返回;

2301_80296866的博客 253

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【递归,搜索与回溯算法】专题二:二叉树的深搜

【递归、搜索与回溯】专题二:二叉树的深搜:2331. 计算布尔二叉树的值、129. 求根节点到叶节点数字之和、814. 二叉树剪枝、98. 验证二叉搜索树、230. 二叉搜索树中第 K 小的元素、257. 二叉树的所有路径

tan_run的博客 1297

《七月集训》第十五日——深度优先搜索

给你一棵完整二叉树的根,这棵树有以下特征叶子节点要么值为0要么值为1,其中0表示False,1表示True。非叶子节点要么值为2要么值为3,其中2表示逻辑或OR,3表示逻辑与AND。计算一个节点的值方式如下如果节点是个叶子节点,那么节点的值为它本身,即True或者False。否则,计算两个孩子的节点值,然后将该节点的运算符对两个孩子值进行运算。返回根节点root的布尔运算值。...

smallwind256的博客 517

七月day15——深度优先搜索

深度优先搜索

yttt的博客 167

【力扣刷题实战】计算布尔二叉树的值

文章目录目录力扣题目:计算布尔二叉树的值题目描述解题思路问题理解算法选择具体思路解题要点完整代码(C++)兄弟们共勉 !!! 每篇前言原题链接:2331. 计算布尔二叉树的值 - 力扣(LeetCode)给你一棵 完整二叉树 的根,这棵树有以下特征:计算 一个节点的值方式如下:返回根节点 的布尔运算值。完整二叉树 是每个节点有 个或者 个孩子的二叉树。叶子节点 是没有孩子的节点。示例 1: 输入:root = [2,1,3,null,null,0,1] 输出:true 解释:上图展示了计算过程。 AN

2401_85548793的博客 1106

计算布尔二叉树的值

使用。

2302_80190174的博客 847

【LeetCode】2331. 计算布尔二叉树的值

day77 ,二叉树递归,【简单】

weixin_43894455的博客 457

【算法leetcode】2331. 计算布尔二叉树的值(多语言实现)

给你一棵 完整二叉树 的根,这棵树有以下特征: 叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True 。 非叶子节点 要么值为 2 要么值为 3 ,其中 2 表示逻辑或 OR ,3 表示逻辑与 AND 。 计算 一个节点的值方式如下: 如果节点是个叶子节点,那么节点的 值 为它本身,即 True 或者 False 。 否则,计算 两个孩子的节点值,然后将该节点的运算符对两个孩子值进行 运算 。 返回根节点 root 的布尔运算值。

二当家的白帽子 649

​力扣解法汇总2331. 计算布尔二叉树的值

​力扣解法汇总2331. 计算布尔二叉树的值

分享+记录 661

【LeetCode每日一题】【2023/2/6】2331. 计算布尔二叉树的值

方法: 1. 递归

Wang_Xin_Ling的博客 463

【递归搜索回溯专栏】专题二:二叉树中的深搜----计算布尔二叉树的值

【递归搜索回溯专栏】专题二:二叉树中的深搜----计算布尔二叉树的值

小小unicorn的博客 1382
上一篇: 【LeetCode】1798. 你能构造出连续值的最大数目(c、c++、java)
下一篇: 用JAVA写一个画图程序(课程设计)
天皓Oo
博客等级 码龄5年 337粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值