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

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


题目来源

本题来源为:

Leetcode 2331. 计算布尔二叉树的值

题目描述

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

叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True 。

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

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

如果节点是个叶子节点,那么节点的 值 为它本身,即 True 或者 False 。

否则,计算 两个孩子的节点值,然后将该节点的运算符对两个孩子值进行 运算 。

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

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

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

题目解析

我们举个例子:

题目说的是,2是逻辑或,3是逻辑与,0为false,1为true.

在根节点2那么他就是逻辑或,2的左节点为1,那么他就是true,2的右子树中:

3是逻辑与,要想将3节点的结果返回给根节点2,就需要知道3节点的左子树与右子树。3的左节点为0,那么就是false,右节点为1,那么就为true,取一个逻辑与,那么3节点的布尔值就为false.

现在看根节点2,左边是true,右边是false,取一个逻辑或,那么最后结果就是true,所以最后整棵树的布尔值就为true。

算法原理

把题目解析分析完,就很容易看出来相同的子问题:

要想知道根节点的布尔值,就需要知道根节点的左子树与右子树的布尔值。

计算左子树与右子树的布尔值的方法是一致的。

也可以近似理解为就相当与后序遍历一下这棵树。

函数头

函数头很简单,我们就传入根即可。

函数体

要想知道根的布尔,就需要知道根的左子树与右子树的值:

那么我们直接传入根的左子树与右子树(黑盒)我们相信这个黑盒一定能帮我们完成任务。

函数返回值

注意这颗二叉树是一颗完整二叉树:

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

因此我们首先判断根节点是否有左子树,其次根节点的值是否为0;

代码实现

class Solution 
{
public:
    bool evaluateTree(TreeNode* root) 
    {
        if(root->left==nullptr)
            return root->val==0?false:true;
        //递归
        bool left=evaluateTree(root->left);
        bool right=evaluateTree(root->right);
        return root->val==2?(left|right):(left&right);    
    }
};
相关文章
|
缓存 Java 开发工具
Flutter— 第一次运行Flutter工程时的Bug总结
Flutter— 第一次运行Flutter工程时的Bug总结
 Flutter— 第一次运行Flutter工程时的Bug总结
|
3月前
|
缓存 JSON API
1688 商品详情 API 接口实战指南
1688开放平台alibaba.item.get接口,用于获取商品全量信息,支持选品、ERP同步等场景。需企业认证、申请权限并配置IP白名单。通过AppKey/Secret生成签名,调用时指定item_id等参数,返回商品标题、价格、SKU、图片等字段。默认5次/秒调用频次,建议按需请求、本地缓存、异步处理以提升效率。
|
5月前
|
机器学习/深度学习 算法 PyTorch
125_训练加速:FlashAttention集成 - 推导注意力优化的独特内存节省
2025年,大型语言模型的训练面临着前所未有的挑战。随着模型参数量和序列长度的不断增加,传统注意力机制的内存瓶颈问题日益突出。FlashAttention作为一种突破性的注意力算法,通过创新的内存访问模式和计算优化,显著提升了训练效率和内存利用。
|
4月前
|
存储 缓存 固态存储
系统分区完全指南:多种方法实现专业磁盘管理
合理磁盘分区可提升搜索效率、增强容错性、优化性能并便于管理。建议分为系统盘与数据盘,Windows推荐GPT格式,支持更大容量与UEFI启动。可通过系统自带工具或DiskGenius进行分区操作,注意备份、4K对齐及电源稳定。
1039 3
|
5月前
|
人工智能 DataWorks 算法
智能体创业新风口:从算法开发到IP运营的范式转移——AI智能体如何重塑创新创业的底层逻辑
AI正从技术工具演变为具备人格的智能体,催生“智能体创业”新风口。本文探讨如何通过人格化IP、生态运营与阿里云赋能,实现从算法创新到商业化的范式转移,重塑未来创业格局。
|
6月前
|
搜索推荐 物联网 定位技术
IP定位技术的功能和服务概述
总结而言,虽然不能达到GPS那样精确度但是基于成本效益考虑,在多种场景下都证明了其价值。随着移动计算、物联网(IoT)及普适计算领域快速扩张将进一步推动相关研究进步使得未来几年内我们预见会有更加精确便捷高效普适解决方案面市满足日益增长需求。
673 16
|
11月前
|
Kubernetes 数据可视化 Java
SAE 实现应用发布全过程可观测
本文聚焦阿里云Serverless应用引擎(SAE)用户在发布过程中的痛点,如“发布效率低、实例启动过程不透明”等问题。通过分步骤可视化解决方案,帮助用户明确问题、理解原因并最终解决,提升SAE平台使用体验。文章详细剖析了发布过程慢、信息透出不足及实例启动黑盒等痛点,并提出通过可观测、可解释和可优化的策略解决问题,同时展示了具体实现效果与后续优化规划。
607 68
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
1275 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!