《算法题讲解指南:递归,搜索与回溯算法--二叉树中的深搜》--6.计算布尔二叉树的值,7.求根节点到叶节点数字之和

《算法题讲解指南:递归,搜索与回溯算法--二叉树中的深搜》--6.计算布尔二叉树的值,7.求根节点到叶节点数字之和

🔥小叶-duck个人主页

❄️个人专栏《Data-Structure-Learning》

《C++入门到进阶&自我学习过程记录》

《算法题讲解指南》--优选算法

《算法题讲解指南》--递归、搜索与回溯算法

未择之路,不须回头
已择之路,纵是荆棘遍野,亦作花海遨游


目录

深度优先遍历介绍

6.计算布尔二叉树的值

题目链接:

题目描述:

题目示例:

解法(递归):

算法思路:

C++算法代码:

7.求根节点到叶节点数字之和

题目链接:

题目描述:

题目示例:

解法(dfs-前序遍历):

算法思路:

C++算法代码:

算法总结及流程解析:

结束语


深度优先遍历介绍

      深度优先遍历(DFS,全称为 Depth First Traversal),是我们树或者图这样的数据结构中常用的一种遍历算法。这个算法会尽可能深的搜索树或者图的分支,直到一条路径上的所有节点都被遍历完毕,然后再回溯到上一层,继续找一条路遍历。
      在二叉树中,常见的深度优先遍历为:前序遍历、中序遍历以及后序遍历
      因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。并且前中后序三种遍历的唯一区别就是访问根节点的时机不同,在做题的时候,选择一个适当的遍历顺序,对于算法的理解是非常有帮助的。

6.计算布尔二叉树的值

题目链接:

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

题目描述:

题目示例:

解法(递归):

算法思路:

      本题可以被解释为:
      1.对于规模为 n 的问题,需要求得当前节点值。
      2.节点值不为 0或1 时,规模为 n 的问题可以被拆分为规模为 n-1 的子问题:
          a.所有子节点的值;
          b.通过子节点的值运算出当前节点值。
      3.当问题的规模变为 n=1 时,即叶子节点的值为 0或1,我们可以直接获取当前节点值为 0或1。

C++算法代码:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool evaluateTree(TreeNode* root) { //解法:递归(dfs) //递归结束条件:当结点没有左右孩子时返回该结点值 if(root->left == nullptr && root->right == nullptr) { return root->val; //因为到递归结束时也就是到叶子结点时,因为叶子结点只有0和1两个值 //并且这两个值就可以代表false和true,所以直接返回root->val即可 } root->left->val = evaluateTree(root->left); root->right->val = evaluateTree(root->right); return root->val == 2 ? root->left->val || root->right->val : root->left->val && root->right->val; } };

7.求根节点到叶节点数字之和

题目链接:

129. 求根节点到叶节点数字之和 - 力扣(LeetCode)

题目描述:

题目示例:

解法(dfs-前序遍历):

      前序遍历按照根节点、左子树、右子树的顺序遍历二叉树的所有节点,通常用于子节点的状态依赖于父节点状态的题目。

算法思路:

      在前序遍历的过程中,我们可以往左右子树传递信息,并且在回溯时得到左右子树的返回值。递归函数可以帮我们完成两件事:

      1.将父节点的数字与当前节点的信息整合到一起,计算出当前节点的数字,然后传递到下一层进行递归;
      2.当遇到叶子节点的时候,就不再向下传递信息,而是将整合的结果向上一直回溯到根节点

      在递归结束时,根节点需要返回的值也就被更新为了整棵树的数字和。

C++算法代码:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: int sumNumbers(TreeNode* root) { if(root->left == nullptr && root->right == nullptr) { return root->val; } int leftsum = 0, rightsum = 0; if(root->left) { TreeNode* left = root->left; left->val = root->val * 10 + root->left->val; leftsum = sumNumbers(left); } if(root->right) { TreeNode* right = root->right; right->val = root->val * 10 + root->right->val; rightsum = sumNumbers(right); } return leftsum + rightsum; } };

算法总结及流程解析:

结束语

      到此,6.计算布尔二叉树的值,7.求根节点到叶节点数字之和 这两道算法题就讲解完了。计算布尔二叉树的值 通过递归求解子节点值,再根据运算符计算当前节点值; 求根节点到叶节点数字之和 采用前序遍历方式,在递归过程中传递并累加节点数值。希望大家能有所收获!

Read more

积木报表快速入门指南:零基础轻松上手数据可视化【低代码报表设计器】

积木报表快速入门指南:零基础轻松上手数据可视化【低代码报表设计器】

文章目录 * 前言 * 一、积木报表简介 * 二、环境准备 * 1. 下载积木报表 * 2. 运行环境要求 * 3. 快速启动(以Docker方式为例) * 三、第一个报表创建实战 * 1. 登录系统 * 2. 选择数据源 * 3. 设计报表 * 四、进阶功能快速上手 * 1. 图表集成 * 2. 参数传递 * 3. 分组与汇总 * 4. 导出与打印 * 五、实用技巧与最佳实践 * 1. 性能优化: * 2. 模板复用: * 3. 移动端适配: * 4. 定时任务: * 六、常见问题解答 * Q1:积木报表支持哪些数据库? * Q2:如何实现复杂的中国式报表? * Q3:能否集成到自己的系统中? * Q4:

By Ne0inhk
web3.0 开发实践

web3.0 开发实践

优质博文:IT-BLOG-CN 一、简介 Web3.0也称为去中心化网络,是对互联网未来演进的一种概念性描述。它代表着对现有互联网的下一代版本的设想和期望。Web3.0的目标是通过整合区块链技术、分布式系统和加密技术等新兴技术,构建一个更加去中心化、安全、隐私保护和用户的互联网。 Web 3.0具备四项主要功能 【1】去中心化: 去中心化的Web应用程序是Web 3.0的关键功能。其目的是在去中心化网络中分发和存储数据。在这些网络中,不同的实体拥有底层基础设施,用户直接向存储提供商付费以访问该空间。 去中心化的应用程序还将信息副本存储在多个位置,并确保整个过程中的数据一致性。每位用户可以控制其数据存放的位置,而不必将其移交给集中式基础设施。去中心化的互联网用户可根据需要出售自己的数据。 【2】去信任性: 在集中式Web应用程序和服务中,用户通常需要信任中央权威机构来管理其数据、交易和交互。这些中央权威机构可以控制用户数据,并且可以操纵系统的规则。数据可能存在安全风险或管理不善,从而导致用户信息丢失或滥用。 相比之下,Web3引入去信任性,因此用户可以在无需信任任何特定方

By Ne0inhk

YOLOFuse AR可视化演示:手机扫码查看检测效果

YOLOFuse AR可视化演示:手机扫码查看检测效果 在夜间监控场景中,你是否遇到过这样的问题——摄像头画面一片漆黑,目标完全不可见?传统RGB相机在这种情况下几乎“失明”,而红外热像仪却能清晰捕捉人体或车辆的热辐射轮廓。如果能让两种模态的信息无缝融合,不仅白天看得清,夜晚也能精准识别,那将极大提升系统的鲁棒性。 这正是 YOLOFuse 的设计初衷:通过深度学习实现RGB与红外图像的高效融合,在复杂环境(如低光照、烟雾遮挡)下仍保持高精度目标检测能力。更特别的是,它还支持一种新颖的交互方式——只需用手机扫描生成的检测图二维码,就能直接查看带标注框的增强可视化结果,让非技术人员也能直观理解AI的“看见”过程。 这套系统并非从零构建,而是基于当前最流行的 Ultralytics YOLOv8 框架进行扩展。YOLO系列以速度快、精度高著称,尤其适合实时部署;而YOLOFuse在此基础上引入双流结构,分别处理可见光和红外输入,并在不同层级实施特征融合策略。整个流程既保留了原框架简洁易用的优点,又实现了多模态感知的能力跃升。 它的核心优势之一是“开箱即用”。开发者不再需要手动配置P

By Ne0inhk
《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合

《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合

Virt-A-Mate》由Meshed VR 所开发的虚拟实境游戏,你也可以通过Oculus Rift 或HTC Vive 头戴式装置来进行互动式游玩,一旦你进入《Virt A Mate》的世界,你几乎会忘乎所以,进入一个全新的世界,这个世界遵循基本的物理定力,也就是说游戏中的头发、衣服都很真实,随着你的动作而产生运动,而玩家也能亲自编辑角色的服装。 VAM整合包 解压后30GB 解压密码在里面 请看清楚 包含vam软件本体,mmd跳舞插件,国漫人物。都在整合包里面! vam是软件不是游戏 但完成跳舞是比较简单的 回复关键词:vam

By Ne0inhk