《算法题讲解指南:递归,搜索与回溯算法--二叉树中的深搜》--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

Cogito-V1-Preview-Llama-3B 微信小程序开发:集成AI对话功能指南

Cogito-V1-Preview-Llama-3B 微信小程序开发:集成AI对话功能指南 最近在做一个微信小程序项目,需要给它加上一个智能对话的功能。用户可以在小程序里提问,然后得到一个像模像样的回答。听起来挺酷,但做起来发现一堆坑:小程序怎么调用外部AI接口?网络慢了怎么办?对话历史怎么存?这些问题不解决,用户体验就上不去。 我最后选了Cogito-V1-Preview-Llama-3B这个模型,它体积不大但能力不错,很适合放在服务器上给小程序用。折腾了几天,总算把前后端都跑通了。今天就把整个过程,包括代码怎么写、问题怎么解决,都整理出来。如果你也想在小程序里加个AI助手,这篇文章应该能帮你省不少时间。 1. 项目准备:理清思路与搭建环境 在动手写代码之前,得先把整个流程想清楚。我们的目标是:用户在微信小程序里输入问题,小程序把问题发给咱们自己部署好的AI模型服务器,服务器处理完再把答案传回小程序,最后显示给用户。 听起来就是“请求-响应”这么简单,但微信小程序有自己的一套规则,不能随便访问外网。所以,我们需要一个自己的后端服务器,作为小程序和AI模型之间的“中间人”。

By Ne0inhk
2026新手小白AI创业变现指南(二)- AI写作辅助平台

2026新手小白AI创业变现指南(二)- AI写作辅助平台

刚刚更新了2026新手小白AI创业变现指南l列表,新增加了测试过的炼字工坊、蛙蛙写作、笔杆平台(学术论文平台,非通用写作平台)。想简单介绍下,详情请点击2026新手小白AI创业变现指南(一)中平台列表中平台名称看详细介绍。 一、炼字工坊 平台基础信息 项目内容平台名称炼字工坊官方网址https://lianzigongfang.com平台介绍专为网文/剧本/漫剧作者设计的AI创作平台,帮你把精力花在“故事和表达”上,把重复、耗时、卡壳的部分交给AI。相比通用AI,炼字工坊在长篇稳定性上有明显优势。它用「问答+抽卡」帮你定题材卖点,用「设定库」自动归档世界观和角色,用「分层大纲」把控剧情节奏,用「续写润色」解决卡文问题。最重要的是:你的作品不会用于AI训练,版权完全归你。核心定位长篇创作的全流程辅助,从灵感、设定到续写、润色,让你专注创作本身。 🎯 它和通用AI(如DeepSeek、千问)

By Ne0inhk

亲测Whisper-large-v3语音识别:会议转录效果超预期

亲测Whisper-large-v3语音识别:会议转录效果超预期 在日常工作中,会议记录、访谈整理、课程听写等场景对语音识别的准确性和多语言支持提出了极高要求。近期,我基于“Whisper语音识别-多语言-large-v3语音识别模型”镜像部署了一套本地化Web服务,并在真实会议音频上进行了实测,结果令人惊喜——中文转录准确率显著提升,多语种混合场景下也能精准识别并自动标注语言类型,整体表现远超预期。 本文将围绕该镜像的实际部署与应用展开,重点分享以下内容: * 镜像环境的快速部署与运行验证 * Web界面与API双模式使用体验 * 多语言会议音频的真实转录效果分析 * 性能瓶颈与优化建议 * 工程落地中的实用技巧 1. 镜像部署与服务启动 1.1 环境准备与资源要求 根据镜像文档说明,本服务依赖高性能GPU进行推理,推荐配置如下: 资源推荐规格GPUNVIDIA RTX 4090 D(23GB显存)或同级A100/H100内存16GB以上存储至少10GB可用空间(含模型缓存)操作系统Ubuntu 24.04 LTS 实际测试中,我在一台配备RTX

By Ne0inhk