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

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

个人主页:1白天的黑夜1-CSDN博客

专栏:力扣刷题录_1白天的黑夜1的博客-CSDN博客、企鹅程序员:Linux 系统与网络编程_1白天的黑夜1的博客-CSDN博客

目录

一、题目解析

1、非叶子节点要么值为2代表||,要么值为3代表&&

2、叶子节点要么值为1代表true,要么值为0代表false

3、该二叉树属于完全二叉树,即只有2个或0个孩子节点

4、计算根据非叶子节点代表的逻辑运算符对叶子节点进行逻辑运算

二、算法原理

解法:递归

角度1:以宏观看待递归

如何编写递归代码?

1、重复子问题-设计函数头

2、只关心某一个子问题做什么-函数体设计

3、递归函数出口

角度2:以后序遍历看待递归

递归代码编写

1、根据后序遍历递归调用,所以题目给的函数直接使用

2、先用一个bool类型的left接收递归函数左子树的返回值,再用一个right接收递归函数右子树的返回值

3、根据left和right以及root->val,计算逻辑值,如果root->val == 2,则返回left || right;如果root->val == 3,则返回left && right。

4、函数出口:当递归到叶子节点的时候们直接返回root->val即可,如果值为1,返回true,反之返回false

以角度1或角度2结合自己的思路,去尝试编写代码,提升自己的代码水平,题目链接如下

三、代码示例

四、递归展开图

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!


一、题目解析

1、非叶子节点要么值为2代表||,要么值为3代表&&

2、叶子节点要么值为1代表true,要么值为0代表false

3、该二叉树属于完全二叉树,即只有2个或0个孩子节点

4、计算根据非叶子节点代表的逻辑运算符对叶子节点进行逻辑运算

二、算法原理

解法:递归

角度1:以宏观看待递归

在计算它的逻辑值之前,我们得先知道它的左右两边的逻辑值,由此递推下去我们找到了重复子问题。

如何编写递归代码?

1、重复子问题-设计函数头

我们的重复子问题是计算子树的逻辑值,需要一个bool类型的返回值,还需要一个参数接收root的指针,所以可以直接用题目给出来的函数头。

2、只关心某一个子问题做什么-函数体设计

我们需要先遍历根的左树,然后遍历树的右树,根据返回值和根的逻辑运算符计算结果。

3、递归函数出口

如果一个递归函数没有函数出口,会导致递归层数过多,引发堆栈溢出,使程序报错。所以当访问到叶子节点的时候,直接返回叶子节点的val即可。

角度2:以后序遍历看待递归

根据计算过程在计算根的逻辑值时,需要先计算出左子树和右子树的逻辑值,这样的计算顺序不禁让我们联想到二叉树的后序遍历,即先左子树、右子树,后根的遍历方式。

递归代码编写

1、根据后序遍历递归调用,所以题目给的函数直接使用
2、先用一个bool类型的left接收递归函数左子树的返回值,再用一个right接收递归函数右子树的返回值
3、根据left和right以及root->val,计算逻辑值,如果root->val == 2,则返回left || right;如果root->val == 3,则返回left && right。
4、函数出口:当递归到叶子节点的时候们直接返回root->val即可,如果值为1,返回true,反之返回false

以角度1或角度2结合自己的思路,去尝试编写代码,提升自己的代码水平,题目链接如下

2331. 计算布尔二叉树的值 - 力扣(LeetCode)

三、代码示例

class Solution {
public:bool evaluateTree(TreeNode* root){if(root->left == nullptr && root->right == nullptr) return root->val;bool left = evaluateTree(root->left);bool right = evaluateTree(root->right);return root->val == 2 ? left || right : left && right;    }
};

四、递归展开图

这里的递归展开图很简单,就是在而二叉树上模拟计算的过程

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!

http://www.dtcms.com/a/507101.html

相关文章:

  • 下部刚刚是上部
  • 自动化产线效率低,主要看这四个环节
  • 如何查询网站开发语言杭州企业网站制作
  • sql server网站建设电子商务网络营销的概念
  • 网页制作基础教程代码网站seo软件
  • kafka中server.properties中的关键配置
  • 帧率、分辨率、码率
  • Linux补充01:HTTPS协议原理
  • 2025全球风电盛会CWP今日开展
  • Linux网络 网络层
  • 一个专门做各种恐怖片的电影网站怎样用记事本做网站
  • 织梦网站后台密码wordpress forandroid
  • STP的配置
  • 解锁细胞青春密码:美国 WJCZ 麦角硫因时光胶囊,用前沿生物科技对抗肌肤衰老
  • CTFSHOW—WEB4
  • MySQL InnoDB 状态(SHOW ENGINE INNODB STATUS)深度分析与性能优化建议
  • 全感知智慧校园场景大联动解决方案PPT(53页)
  • 分享一个成品的grafana表
  • sward V2.1.1版本发布,支持在线安装与消息配置等功能
  • 机器学习基础入门(第六篇):深度学习的兴起与神经网络基础
  • 京东联盟新手没有网站怎么做推广博物馆展陈设计公司
  • 【数据结构】最长的最短路径的求解
  • 网站后台管理产品排序网站被黑是怎么回事
  • jinji2模板
  • Linux route
  • 接10月12日---队列笔记
  • 第四章 串、数组和广义表——课后习题解练【数据结构(c语言版 第2版)】
  • 从C语言标准揭秘C指针:第 10 章:指针与动态内存:堆区内存的生命周期管理
  • 设计汽车网站外贸建站服务器怎么选
  • 微网站制作超链接太原网站开发工程师