当前位置: 首页 > news >正文

「优选算法刷题」:计算布尔二叉树的值

一、题目

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

  • 叶子节点 要么值为 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 

二、思路解析

二叉树,大部分都是用到递归来实现的,所以,这道题我们可以有意地往递归上靠。

而递归一大重点就是,我们要寻找 每次递归中的相同子问题

也就是计算所有子节点的值,而这则是通过子节点的值运算出的。

抽象一下递归函数流程就是:

1. 当前问题规模为 n=1 时,即叶子节点,直接返回当前节点值;
2. 递归求得左右子节点的值;
3. 通过判断当前节点的逻辑运算符,计算左右子节点值运算得出的结果;

具体运算结合题目的条件即可,下面是完整代码实现👇

三、完整代码

/*** 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 == 0 ? false : true; }boolean left = evaluateTree(root.left);boolean right = evaluateTree(root.right);return root.val == 2 ? left | right : left & right;}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

相关文章:

「优选算法刷题」:计算布尔二叉树的值

一、题目 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。非叶子节点 要么值为 2 要么值为 3 &#xff0c;其中 2 表示逻辑或 OR &#xff0c;3 表示逻辑与 AND…...

A系统数据表同步到B系统数据表

一、 事务操作 &#xff08;小量数据&#xff09; 事务操作通常用于确保数据的一致性和完整性。以下是一些常见的应用场景&#xff1a; 银行转账&#xff1a;当从一个账户向另一个账户转账时&#xff0c;需要确保两个操作&#xff08;从一个账户扣款和向另一个账户存款&#x…...

Qt实现类似ToDesk顶层窗口 不规则按钮

先看效果&#xff1a; 在进行多进程开发时&#xff0c;可能会遇到需要进行全局弹窗的需求。 因为平时会使用ToDesk进行远程桌面控制&#xff0c;在电脑被控时&#xff0c;ToDesk会在右下角进行一个顶层窗口的提示&#xff0c;效果如下&#xff1a; 其实要实现顶层窗口&#xf…...

发布4-运行JRT程序

到了本章节&#xff0c;你需要准备好JDK17的环境和idea环境。并且安装好选择的数据库软件。这章将正式开始JRT的程序开发。 首先获取程序&#xff0c;我会给下载地址 下载后解压会得到下图目录的文件结构&#xff0c;DBFile放IRIS和PG的数据库文件&#xff0c;JRTClient放打包…...

利用VPN设备漏洞入侵!新型勒索软件CACTUS攻击手法分析

近期&#xff0c;亚信安全应急响应中心截获了利用VPN设备已知漏洞传播的新型勒索软件CACTUS&#xff0c;该勒索于2023年3月首次被发现&#xff0c;一直保持着活跃状态。CACTUS勒索软件通过Fortinet VPN的已知漏洞进行入侵&#xff08;黑客首先获取到VPN账号&#xff0c;再通过V…...

第7章 SpringBoot安全管理

学习目标 了解SpringSecurity安全管理的功能 掌握SpringSecurity的安全配置 掌握SpringSecurity自定义用户认证的实现方法 掌握SpringSecurity自定义用户授权管理的实现方法 掌握如何使用SpringSecurity实现页面控制 实际开发中,一些应用通常要考虑到安全性问题。例如,对于一…...

【QT+QGIS跨平台编译】之二十二:【FontConfig+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、FontConfig介绍二、文件下载三、文件分析四、pro文件五、编译实践 一、FontConfig介绍 FontConfig 是一个用于配置和定制字体的库&#xff0c;广泛应用于基于X Window系统的操作系统中&#xff0c;尤其是在Linux和Unix-like系统中。它为应用程序提供了一种统一的…...

echarts中绘制3D三维地球

简介 echarts中的三维地球&#xff0c;需要用到世界地图json数据&#xff0c;我把json文件放到我的资源中&#xff0c;有需要的自行下载。 安装插件 // 安装echats npm install echarts --save npm install echarts-gl --save 项目中引用 1&#xff0c;引入安装的echarts…...

go grpc高级用法

文章目录 错误处理常规用法进阶用法原理 多路复用元数据负载均衡压缩数据 错误处理 gRPC 一般不在 message 中定义错误。毕竟每个 gRPC 服务本身就带一个 error 的返回值&#xff0c;这是用来传输错误的专用通道。gRPC 中所有的错误返回都应该是 nil 或者 由 status.Status 产…...

Redis实现登录的优化

目录 1 前言 2 实现步骤 2.1 软件环境准备 2.1.1 Redis的安装 2.1.2 在pom.xml中添加依赖 2.1.3 在application.yml中进行相关配置 2.2 StringRedisTemplate的常用方法 2.2.1 获取operations 2.2.2 主要方法 2.3 令牌主动失效机制 2.3.1 登录时将令牌存入Redis 2.…...

ROS方向第二次汇报(5)

文章目录 1.本方向内学习内容&#xff1a;1.1.自定义msg&#xff1a;1.1.1.定义msg文件&#xff1a;1.1.2.编辑配置文件&#xff1a; 1.2.自定义srv&#xff1a;1.2.1.定义srv文件&#xff1a;1.2.2.编辑配置文件&#xff1a; 1.3.服务通信案例实现&#xff1a;1.3.1.服务端实现…...

C# 浅克隆与深克隆

在C#中&#xff0c;浅克隆&#xff08;Shallow Clone&#xff09;和深克隆&#xff08;Deep Clone&#xff09;是两种常见的对象克隆技术&#xff0c;用于创建对象的新副本。 它们的主要区别在于复制对象的层次和属性的处理方式。 浅克隆&#xff08;Shallow Copy&#xff09;…...

Shell 正则表达式及综合案例及文本处理工具

目录 一、常规匹配 二、常用特殊字符 三、匹配手机号 四、案例之归档文件 五、案例之定时归档文件 六、Shell文本处理工具 1. cut工具 2. awk工具 一、常规匹配 一串不包含特殊字符的正则表达式匹配它自己 例子&#xff0c;比如说想要查看密码包含root字符串的&#x…...

React | Center 组件

在 Flutter 中有 Center 组件&#xff0c;效果就是让子组件整体居中&#xff0c;挺好用。 React 中虽然没有对应的组件&#xff0c;但是可以简单封装一个&#xff1a; index.less .container {display: flex;justify-content: center;align-items: center;align-content: ce…...

头歌C++之函数强化练习题

目录 第1关:结构实现复数运算 任务描述 编程要求 第2关:求亲密对数 任务描述 编程要求 第3关:计算一年的第几天 任务描述 编程要求 第4关:正整数求和 任务描述 编程要求 第5关:Pig Latin 任务描述 编程要求 第6关:打印日历 任务描述 编程要求 第1关:结…...

淘宝扭蛋机小程序:开启你的惊喜之旅

随着移动互联网的飞速发展&#xff0c;各种小程序层出不穷&#xff0c;其中&#xff0c;淘宝扭蛋机小程序以其独特的互动性和趣味性&#xff0c;吸引了大量用户。本文将为你详细介绍这款小程序的特色功能、用户体验以及如何使用&#xff0c;助你开启一段惊喜之旅。 一、特色功…...

Jmeter 基于Docker 实现分布式测试

基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便&#xff0c;可以省略软件的安装以及配置&#xff0c;比如jdk、jmeter。需要部署多个工作节点可以节省时间。 制作Jmeter基础镜像 下载jmeter…...

Vite与Webpack打包内存溢出问题优雅处理方式

Vite与Webpack打包内存溢出问题处理 文章目录 Vite与Webpack打包内存溢出问题处理1. Vite1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系统的环境变量 2. Webpack1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系…...

sqlalchemy——@listens_for

问&#xff1a;sqlalchemy如何实现&#xff1a;表中指定数据更新时&#xff0c;其time字段自动更新&#xff1f;答&#xff1a;使用listens_for 装饰器来注册事件监听器&#xff0c;确保在项目数据更新时触发相应的处理逻辑。 示例代码如下&#xff1a; # coding: utf-8 impo…...

MySQL进阶之锁(全局锁以及备份报错解决)

锁 全局锁 全局锁就是对整个数据库实例加锁&#xff0c;加锁后整个实例就处于只读状态&#xff0c;后续的DML的写语句&#xff0c;DDL语 句&#xff0c;已经更新操作的事务提交语句都将被阻塞。 其典型的使用场景是做全库的逻辑备份&#xff0c;对所有的表进行锁定&#xff…...

Pyinstaller:打包Python文件成exe可执行文件

1、pyinstaller安装pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple2、打包单个文件如果所有代码是写在一个.py文件里的&#xff0c;可以尝试使用这种方式pyinstaller -F filesname.py成功运行后会在桌面生成三个文件&#xff1a;可执行文件.exe就在dist…...

AI大模型风口已至!4大高薪就业方向,助你精准转型少走弯路!

当下&#xff0c;AI大模型正从“技术爆发期”迈入“全面应用期”。对于IT从业者而言&#xff0c;这并非一道“要不要转”的选择题&#xff0c;而是一道“往哪转”的战略题。 很多人想抓住这波红利&#xff0c;却卡在“不知道从哪下手”“不清楚自己适合哪个赛道”的困境中。 …...

React on Rails 与 WebSocket 实时通信:完整实现指南

React on Rails 与 WebSocket 实时通信&#xff1a;完整实现指南 【免费下载链接】react_on_rails Integration of React Webpack Rails including server-side rendering of React, enabling a better developer experience and faster client performance. 项目地址: htt…...

ESP32内存告急?别慌!手把手教你搞定‘iram0_0_seg overflowed’编译错误

ESP32内存告急&#xff1f;别慌&#xff01;手把手教你搞定‘iram0_0_seg overflowed’编译错误 当你正沉浸在ESP32项目的开发中&#xff0c;突然一个红色的编译错误打断了你的思绪——"iram0_0_seg overflowed"。这个看似晦涩的错误信息&#xff0c;实际上困扰着许多…...

WRF-CHEM 实战指南(一):MEIC清单的获取、适配与namelist关键配置

1. MEIC排放清单&#xff1a;WRF-CHEM模拟的起点 刚开始接触WRF-CHEM时&#xff0c;最让我头疼的就是找不到合适的人为排放源数据。国内研究常用的MEIC清单&#xff08;Multi-resolution Emission Inventory for China&#xff09;虽然权威&#xff0c;但实际操作中会遇到各种&…...

别再让大模型瞎猜了!用这个提示词模板,轻松搞定多跳问题检索(附Qwen2.5-7B实测效果)

解锁小模型潜力&#xff1a;多跳问题检索的提示词工程实战指南 在构建基于大语言模型的检索增强生成&#xff08;RAG&#xff09;系统时&#xff0c;开发者常面临一个棘手问题&#xff1a;当用户提出需要多步推理的复杂查询时&#xff0c;直接使用原始问题检索往往效果不佳。这…...

OpenClaw模型微调指南:用Qwen3.5-9B-AWQ-4bit优化专业领域识别

OpenClaw模型微调指南&#xff1a;用Qwen3.5-9B-AWQ-4bit优化专业领域识别 1. 为什么需要专业领域的模型微调 上周我在处理一批医疗影像报告时&#xff0c;发现OpenClaw默认的Qwen3.5模型对专业术语的识别准确率只有60%左右。当遇到"冠状动脉CTA"这样的专业描述时&…...

Z-Image-Turbo-辉夜巫女真实生成效果:支持中文提示词直输,无需英文翻译

Z-Image-Turbo-辉夜巫女真实生成效果&#xff1a;支持中文提示词直输&#xff0c;无需英文翻译 1. 模型简介 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的Lora版本&#xff0c;专门针对生成"辉夜巫女"风格图片进行了优化。这个模型最大的特点是支持直接输入中…...

深耕作物模型底层逻辑!DSSAT物候算法、光合物质分配与土壤碳氮循环机制深度解析

在精准农业与智慧育种快速发展的当下&#xff0c;深入解析作物生长发育机理、实现产量与环境的精准模拟&#xff0c;已成为农学科研与农业管理决策的核心需求。DSSAT模型作为全球应用最广泛的作物生长模拟系统&#xff0c;凭借其涵盖27种主要作物的完备模块体系与成熟的算法架构…...

GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码)

GPCC数据不止看趋势&#xff1a;手把手教你用MATLAB做降水信号的谐波分析&#xff08;附周年振幅相位代码&#xff09; 长江流域的降水变化对农业生产、水资源管理和生态保护都具有重要意义。当我们拿到GPCC的月尺度降水数据时&#xff0c;除了绘制时间序列图观察趋势外&#x…...