文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/evaluate-boolean-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 树的后序遍历
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def evaluateTree(self, root: Optional[TreeNode]) -> bool:if not root.left and not root.right:return True if root.val else Falsel = self.evaluateTree(root.left)r = self.evaluateTree(root.right)return (l and r) if root.val==3 else (l or r)

56 ms 15.8 MB Python3


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2331. 计算布尔二叉树的值(树的遍历)相关推荐

  1. 【算法leetcode】2331. 计算布尔二叉树的值(多语言实现)

    文章目录 2331. 计算布尔二叉树的值: 样例 1: 样例 2: 提示: 分析 题解 rust go typescript python c c++ java 原题传送门:https://leetc ...

  2. 2331. 计算布尔二叉树的值-深度优先遍历

    2331. 计算布尔二叉树的值 给你一棵 完整二叉树 的根,这棵树有以下特征: 叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True . 非叶子节点 要么值为 2 ...

  3. 2331. 计算布尔二叉树的值【划水刷题】

    题目链接 2331. 计算布尔二叉树的值 思路 根据题意: 首先分两种条件搞,叶子节点和非叶子节点 叶子节点 判断本身值因为·1为true,0为false,直接返回本身值就行,那么问题就是怎么判断是否 ...

  4. 【深度优先搜索-简单】2331. 计算布尔二叉树的值

    [题目] [代码] # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=No ...

  5. 二叉树总结(二)树的遍历

    该文我会用来总结二叉树相关的知识 二叉树如下图: 二叉树的结构 struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int ...

  6. 【leetcode 971】 翻转二叉树以匹配先序遍历

    题意: 给定一个先序遍历序列,给出一棵树,问能否通过翻转改树的某些左右子节点,使得该树的先序遍历序列等于给定的先序遍历序列 思路: 很基础的题目了,就是先序遍历一下,如果在这个节点的左子节点的值不等于 ...

  7. leetcode学习记录_二叉树_树

    二叉搜索树(二叉排序树.二叉查找树) 二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件: 若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根 ...

  8. leetcode 538:把二叉树搜索树转换为累加树

    leetcode 538:把二叉树搜索树转换为累加树 538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使 ...

  9. 【每日一题】Leetcode 刷题 二叉树-树的遍历 介绍

    二叉树-树的遍历 前序遍历 (根 左 右) 中序遍历 (左 根 右) 后序遍历 (左 右 根) 代码实现 前序遍历 中序遍历 后序遍历 完整代码 前序遍历 (根 左 右) 遍历顺序分别为: F B A ...

最新文章

  1. oracle rman实时备份吗,ORACLE-RMAN自动备份和恢复
  2. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
  3. python3.7.2安装教程-CentOS 7安装Python教程
  4. Office 插件开发和部署的总结
  5. debian搭建php mysql_Debian下MySQL安装经验分享
  6. 集群、RAC和MAA
  7. linux nslcd服务,CentOS 6通过ldap集成AD域账号(nslcd方式)
  8. 模板 - 数论 - (新)
  9. devops流程工具_您的DevOps工作流程依赖哪些工具?
  10. 杭电1596find the safest road(spfa)
  11. 无心剑中译约翰·拉伯克《书海乐无穷》
  12. win10无线网 服务器,win10专业版wifi变成地球怎么办_win10 wifi图标变成小地球无法连接网络如何解决...
  13. bios対初学者_初学者的BIOS
  14. 如何主动退出小程序(微信小程序)
  15. python海龟绘图画玫瑰花的简笔画_用python的小海龟 Turtle 画一朵好看又有趣的小花-Go语言中文社区...
  16. 移动开发平台 mPaaS iOS端原生与WKWebView交互原理(如何打印蚂蚁框架所有原生与h5交互数据)
  17. java生成二维码并导入excel中
  18. 【Java】Java零基础学习笔记
  19. 如何找出1-100之间的质数
  20. 如何用MATLAB叠加傅里叶级数,傅里叶级数展开matlab实现

热门文章

  1. 服务器远程端口是什么?远程端口怎么设置?
  2. 百分百恋人 如何成为他的知心恋人
  3. Compilify Alpha阶段测试报告
  4. sql server小型案例-自动生成销售单号的触发器
  5. Unity3d C#实现显示计时器(游戏运行时间、录制时长等)功能(含项目源码)
  6. 多旋翼无人机进阶教程
  7. 河北大学计算机专业调剂,河北大学考研接收调剂信息
  8. 政考网:公务员考试常识100题,你能答对几个?
  9. Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))
  10. 判断圆和线相切java_通过直线与圆交点数,轻松判断直线与圆关系,相离、相交、相切...