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

上海专业网站建设费用2021拉新推广佣金排行榜

上海专业网站建设费用,2021拉新推广佣金排行榜,微信静首页制作代码,网站设计成品给你一棵 完整二叉树 的根节点,这棵树有以下特征: 叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True 。非叶子节点 要么值为 2 要么值为 3 ,其中 2 表示逻辑或 OR ,3 表示逻辑与 AND 。 …

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

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

计算 一个节点的值方式如下: 如果节点是个叶子节点,那么节点的 值 为它本身,即 True 或者 False 。 否则,计算 两个孩子的节点值,然后将该节点的运算符对两个孩子值进行 运算 。 返回根节点 root 的布尔运算值。

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

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

解题思路

递归是解决这个问题的一个关键部分。在二叉树的相关问题中,递归经常被用来遍历树结构,因为它允许我们在不显式使用栈或队列的情况下,通过函数调用栈隐式地维护一个访问节点的顺序。

  1. 定义节点结构
    使用TreeNode结构来表示树的节点,包含节点的值和左右孩子指针。

  2. 递归遍历
    使用递归函数遍历树的节点。对于每个节点,根据其值判断是叶子节点还是非叶子节点,并分别处理。

  3. 逻辑运算

    • 如果节点是叶子节点(值为0或1),直接返回对应的布尔值。
    • 如果节点是非叶子节点,根据其值(2或3)分别进行逻辑或和逻辑与运算,并返回结果。
bool evaluateTree(TreeNode* root) {  // 基本情况(叶子节点)  if (root->val == 0) {  return false;  } else if (root->val == 1) {  return true;  }  // 递归情况(非叶子节点)  // 对于非叶子节点,我们需要计算其左右孩子的值  bool leftValue = evaluateTree(root->left);  // 递归调用,计算左孩子的值  bool rightValue = evaluateTree(root->right); // 递归调用,计算右孩子的值  // 根据当前节点的运算符(由 val 决定),返回相应的逻辑运算结果  if (root->val == 2) {  // 当前节点是逻辑或 OR 运算符  return leftValue || rightValue;  } else if (root->val == 3) {  // 当前节点是逻辑与 AND 运算符  return leftValue && rightValue;  }  // 理论上不会执行到这里,因为题目已经限定节点值只能是0, 1, 2, 3  // 但为了代码的健壮性,最好还是加上这个返回语句  return false; // 这是一个默认返回,实际上不会被执行  
}

 递归的拆解

  1. 基本情况
    • 当我们遇到一个叶子节点时(即节点的值为0或1),我们不需要再递归调用,因为叶子节点没有孩子。我们直接返回该节点的布尔值(0对应false,1对应true)。
  2. 递归情况
    • 当我们遇到一个非叶子节点时(即节点的值为2或3),我们需要计算其左右孩子的值。
    • 我们通过递归调用evaluateTree函数来计算左孩子的值(leftValue)和右孩子的值(rightValue)。
    • 在递归调用中,我们实际上是在处理一个更小的子问题:计算一个子树的根节点的布尔值。
    • 递归调用会继续进行,直到我们遇到叶子节点为止。一旦我们到达叶子节点,递归就会开始回溯,每个递归调用都会返回一个布尔值给它的调用者。
  3. 回溯
    • 在回溯过程中,我们根据当前节点的运算符(2或3)和左右孩子的值(leftValuerightValue)来计算当前节点的布尔值。
    • 然后,这个值会被返回给当前节点的父节点的递归调用。
  4. 终止
    • 递归会在所有叶子节点都被访问并处理完毕后终止。由于树是有限的,递归调用最终会耗尽所有的节点,并返回到最初的调用点(即根节点的递归调用)。
  5. 结果
    • 最终,根节点的递归调用会返回一个布尔值,这个值就是整个树的逻辑运算结果。

注意事项

  • 递归函数必须有一个明确的终止条件(基本情况),否则会导致无限递归和栈溢出。
  • 在递归调用中,我们实际上是在将问题分解成更小的子问题来解决。
  • 递归的关键在于理解函数调用的栈行为,以及每个递归调用如何与它的子调用和父调用相关联。
http://www.khdw.cn/news/27778.html

相关文章:

  • 微信用大型网站站做跳板百度官网首页网址
  • 关于省钱的网站名字网站备案是什么意思
  • 搭建论坛网站网站优化内容
  • wordpress博客代码高亮阿里巴巴怎么优化关键词排名
  • 广东网站建设系统seo系统是什么意思
  • 网站开发合作协议合同范本长沙做搜索引擎的公司
  • ps课堂网站网页设计与制作学什么
  • 网站换域名做301会有影响下载百度官方版
  • 江门免费模板建站互联网营销师培训多少钱
  • 铺铺旺网站做多久了企业员工培训课程有哪些
  • 北京网站设计公司济南兴田德润团队怎么样网络营销发展方案策划书
  • 厦门做网站排名seo快速排名案例
  • 在线小公司网站制作网站提交入口链接
  • pc网站平台绍兴百度seo排名
  • 做网站开发有什么专业证站长工具seo综合查询权重
  • 动态网站设计和管理app有哪些推广方式
  • 吉林沈阳网站建设公司网站页面设计
  • 网络营销与网站推广的美国最新新闻头条
  • 自学建立网站网页推广链接怎么做
  • 一家专门做内部优惠的网站高端网站建设的公司
  • 衡阳网站排名优化seo关键词排名价格
  • 织梦网站如何做二级导航网站推广工具
  • 做旅游业务的商业网站ks免费刷粉网站推广
  • 武汉今天特大新闻seo人员是什么意思
  • 地板网站模板免费下载山东进一步优化
  • wordpress设置标题字体大小阿里巴巴怎么优化关键词排名
  • 安徽建设干部学校网站打开百度
  • wordpress搜索 文章内容重庆放心seo整站优化
  • 邢台市建设局官方网站怎么建立一个属于自己的网站
  • 海口网络建站模板怎么提交网址让百度收录