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

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


题目来源

本题来源为:

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总结
|
数据采集 存储 监控
组建数据治理团队:从无到有的实践指南
通过以上四个步骤,可以从无到有地建立和完善一个高效的数据治理团队。这个团队将帮助企业更好地管理和利用自己的数据资产,从而为企业创造更大的价值。
|
2天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1023 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1721 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
662 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
630 14