【Leetcode每日一题】 递归 - 计算布尔二叉树的值(难度⭐⭐)(44)

news2024/10/1 7:34:04

1. 题目解析

题目链接:2331. 计算布尔二叉树的值

这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。

2.算法原理

算法思路概述:

  • 问题解释:我们面对的是一个节点可能含有逻辑运算符(AND,OR,XOR)的二叉树,节点值为0或1。
  • 对于规模为n的问题,我们需要计算当前节点的值。
  • 若当前节点值不是0或1,则将规模为n的问题拆分为规模为n-1的子问题:
    • 子节点的值;
    • 通过子节点的值进行运算得出当前节点的值。
  • 当问题规模变为n=1时,即叶子节点,我们可以直接获取其节点值为0或1。

算法流程设计:

递归函数设计:

  • 函数名:evaluateTree
  • 返回值:当前节点值。
  • 参数:当前节点指针。
  • 功能:计算当前节点通过逻辑运算符得出的值。

递归函数流程:

  1. 如果当前节点是叶子节点(即问题规模为n=1),直接返回当前节点值。
  2. 递归计算左右子节点的值。
  3. 根据当前节点的逻辑运算符,计算左右子节点值运算得出的结果。

解释:

  • 通过递归函数evaluateTree,我们遍历二叉树节点,并根据逻辑运算符进行计算。
  • 递归过程中,问题规模不断减小,直至叶子节点,然后逐级返回结果,最终得到整棵树的计算结果。

3.代码编写

/**
 * 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 == nullptr) return root->val; 
        bool left = evaluateTree(root->left);
        bool right = evaluateTree(root->right);
        return root->val == 2 ? left | right : left & right;
    }
};

The Last

嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。

觉得有点收获的话,不妨给我点个吧!

如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1549926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

比例尺、等高距和DEM分辨率关系

地球表面的形态是很复杂的,不同地貌类型的形态是由它的相对高度、地面坡度以及所处的地势所决定的,它们是影响等高距的主要因素。从等高距计算公式可以看出,当地图比例尺和图上等高线间的最小距离简称等高线间距确定之后,地面坡度…

前端框架的简单介绍

html html-结构 盖房子之前先划三室二厅 (超文本标记语言)(可以实现一切的文本) css css-样式 在房里添家具 (层叠样式单)(化妆在脸上叠加) javascript(js) javascript(js)-交互(行为) 我点击你打开 供显示信息的元…

多维数组和交错数组笔记

1.) 关于数据的几个概念: Rank,即数组的维数,其值是数组类型的方括号之间逗号个数加上1。 Demo:利用一维数组显示斐波那契数列F(n) F(n-1) F(n-2) (n >2 ),每行显示5项,20项. static void Main(string[] args){int[] F n…

线程局部存储(TLS)

线程局部存储(Thread Local Storage,TLS),是一种变量的存储方法,这个变量在它所在的线程内是全局可访问的,但是不能被其他线程访问到,这样就保持了数据的线程独立性。而熟知的全局变量&#xff…

2014年认证杯SPSSPRO杯数学建模C题(第一阶段)土地储备方案的风险评估全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 C题 土地储备方案的风险评估 原题再现: 土地储备,是指市、县人民政府国土资源管理部门为实现调控土地市场、促进土地资源合理利用目标,依法取得土地,进行前期开发、储存以备供应土地的行为。土地…

⼗多种免费Unity VR资源⼯具

1、VRTK是⼀种⾼效的VR⼯具包,⽤于在Unity3d中快速构建VR解决⽅案VRTK - Virtual Reality Toolkit - [ VR Toolkit ] | Integration | Unity Asset StoreUse the VRTK - Virtual Reality Toolkit - [ VR Toolkit ] from Sysdia Solutions Ltd on your next project.…

PyTorch-----torch.nn.Softmax()函数

Softmax原理 Softmax 函数是一种常用的激活函数,通常用于多分类问题中。它将一个含有多个实数值的向量(通常称为 logits)转换成一个概率分布,使得每个元素都在 (0, 1) 区间内,并且所有元素的和为 1。 假设我们有一个实…

YOLOv5实战记录02 模型检测

本人记录打卡,不够自习,慎看。 今天主要学了计组和计网,YOLO简单打个卡。 指路大佬:【手把手带你实战YOLOv5-入门篇】YOLOv5 模型检测_哔哩哔哩_bilibili 1. 主要讲了几个关键参数: 图源你可是处女座 运行示例&#…

iOS17 隐私协议适配详解

1. 背景 网上搜了很多文章,总算有点头绪了。其实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。 WWDC23 中关于隐私部分的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的…

SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比

产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品,支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据,已应用于数百家企业生产,也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主…

阿里云ubuntu服务器搭建可视化界面

连接终端 最好初始化服务器的时候 不要以root权限创建 否则会出错 1更新软件: sudo apt-get update2安装ubuntu desktop : sudo apt-get install ubuntu-desktop3 配置ubuntu desktop并重启: sudo apt-get -f install sudo dpkg-reconfigure ubuntu-desktop sudo reboot4 su…

STM32使用HAL库SPI驱动W25Q16 使用FATFS文件系统+USB虚拟U盘

概述 使用stm32F407驱动W25Q16,使用FATFS文件系统,USB虚拟优盘功能,W25Q16一共512个扇区,其中128作为flash存取相关数据,其他的384个扇区用作虚拟U盘使用 CubeMax配置过程 代码 W25Q16.c /***********************…

【深度学习】语义分割(FCN网络/DeepLabV3网络)学习记录

up主学习视频地址: 【语义分割前言】 https://www.bilibili.com/video/BV1ev411P7dR/?share_sourcecopy_web&vd_source49d7ac1e09d11f99978e8cf36c8bad41 这个up主真的很厉害,宝藏up主呀!!! 常见语义分割评价指…

强化安全防护:升级桌面网管软件提升医院信息系统安全

在当今信息化发展的时代,医院作为重要的医疗服务机构,对终端设备的管理尤为重要。然而,随着国家对医院终端管理的要求日益提高,传统的桌面网管软件已经难以满足现代医院的需求。针对这一现状,升级桌面网管软件已成为当…

喜报|珈和科技入选2023“武汉未来之星TOP100”

近日,由清科创业旗下创业与投资资讯平台——“投资界”发起评选的《2023武汉未来之星TOP100》《2023武汉龙门榜TOP30》两大企业评选结果在武汉市举办的“科创点金汇投融资对接会”上隆重揭晓,珈和科技成功入选“2023武汉未来之星TOP100”榜单。 此次榜…

Unity角色多人同步

1.位置同步和状态同步&#xff1a;需要同步的节点上挂载脚本&#xff1a; gameObject.AddComponent<SyncTransform>(); ; //同步gameObject.GetComponent<SyncTransform>().syncId SyncUtilFunc.GetRoleSyncId(PlayerData.Instance.PlayerId); //同步gameObject.G…

PyTorch----torch.nn.init.kaiming_normal_

神经网络为什么要进行权重初始化&#xff1f; 神经网络进行权重初始化的目的在于促进网络的有效训练和收敛。正确的权重初始化可以帮助缓解梯度消失或梯度爆炸等问题&#xff0c;并且有助于加速训练过程。以下是权重初始化的几个重要原因&#xff1a; 1. **避免梯度消失或梯度…

锂离子电池SOC预测 | python代码实现基于Basisformer时间序列锂离子电池SOC预测研究

概述 基于Basisformer时间序列的锂离子电池SOC(State of Charge,即电池的荷电状态)预测研究,是一项结合深度学习和时间序列分析的前沿技术。该研究的目的是利用Basisformer模型对锂离子电池的SOC进行准确预测,从而提高电池使用效率,延长电池寿命,并优化能源管理系统。 …

unity学习(73)——服务器异常--无法处理 123类型的数据包

服务器发送回的数据包&#xff0c;客户端根本读不出来&#xff0c;type都读不出来&#xff0c;拖了三天&#xff0c;把客户端翻了个底朝天&#xff0c;发现客户端一点问题都没有&#xff01; 所有的问题不是unity的模型问题&#xff0c;就是socket网络通信中断&#xff01; 1…

大文件压缩多个小文件

压缩 压缩后 压缩后&#xff0c;符合上传大小规范