【算法通关指南:数据结构与算法篇】二叉树相关算法题:1.美国血统 American Heritage 2.二叉树问题

【算法通关指南:数据结构与算法篇】二叉树相关算法题:1.美国血统 American Heritage 2.二叉树问题
在这里插入图片描述
🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《算法通关指南》
永远相信美好的事情即将发生
在这里插入图片描述

文章目录


前言

本专栏聚焦算法题实战,系统讲解算法模块:以《c++编程》,《数据结构和算法》《基础算法》《算法实战》 等几个板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力ps:本章节题目分两部分,比较基础笔者只附上代码供大家参考,其他的笔者会附上自己的思考和讲解,希望和大家一起努力见证自己的算法成长

一、美国血统 American Heritage

1.1题目

链接:美国血统 American Heritage

在这里插入图片描述

1.2 算法原理

解法同《求先序序列》,先手动动模拟一下,然后找出「相同子问题」,「递归」求解。
步骤:
(1)先处理左右子树
(2)找根节点
(3)划分左右子树

1.3代码

#include <iostream> using namespace std; string a, b; void dfs(int l1, int r1, int l2, int r2){//递归窗口if(l1 > r1)return;//寻找中序遍历中根节点的位置 int p = l1;while(a[p]!= b[l2]) p++;//递归处理左右子树dfs(l1,p -1,l2 +1,l2 + p - l1);//左子树dfs(p +1,r1,l2 + p - l1 +1,r2);//右子树//根节点 cout << b[l2];} int main(){ cin >> a >> b;dfs(0,a.size()-1,0,b.size()-1);return0;}

二、 二叉树问题

2.1题目

链接:二叉树问题

在这里插入图片描述

2.2 算法原理

深度: 递归。
宽度: 宽搜。
最近公共祖先: 两点之间的距离:通过向上不断找父亲结点。第⼀个重叠的位置,就是两者的最近公共祖先。可以一边寻找,一边计算结果。

2.3代码

//二叉树问题 #include <iostream> #include <vector> #include <queue> using namespace std; const int N =110; vector<int> tree[N]; int fa[N];//f[i]:i的父亲节点 int dest[N];//dest[i]:x到i经历的节点个数// 深度 int dfs(int u){ int ret =0;for(auto v : tree[u]) ret =max(ret,dfs(v));return ret +1;}// 宽度 int bfs(){ queue<int> q; q.push(1); int ret =0;while(q.size()){ int sz = q.size(); ret =max(ret, sz);while(sz--){ auto x = q.front(); q.pop();for(auto v : tree[x]) q.push(v);}}return ret;} int main(){ int n; cin >> n;for(int i =1; i < n; i++){ int u, v; cin >> u >> v; tree[u].push_back(v); fa[v]= u;}//深度 cout <<dfs(1)<< endl;//宽度 cout <<bfs()<< endl;//距离 int x, y; cin >> x >> y;while(x !=1){ dest[fa[x]]= dest[x]+1; x = fa[x];} int len =0;while(y !=1&& dest[y]==0){ y = fa[y]; len++;} cout <<2* dest[y]+ len << endl;return0;}

总结与每日励志

✨本章通过两道经典二叉树算法题,带你巩固递归、深搜、宽搜等核心思想。从美国血统的遍历重建,到二叉树深度、宽度与公共祖先求解,每道题都在训练分治思维与代码实现能力。算法之路无捷径,坚持刷题、理清思路、动手实现,能力便会稳步提升。保持热爱,脚踏实地,每一行代码、每一次思考,都在为更强的自己铺路,永远相信美好的事情即将发生。

在这里插入图片描述

Read more

构建基于Go语言的高性能命令行AI对话客户端:从环境部署到核心实现

构建基于Go语言的高性能命令行AI对话客户端:从环境部署到核心实现

前言 在现代软件开发领域,Go语言凭借其卓越的并发处理能力、静态类型安全以及高效的编译速度,已成为构建命令行工具(CLI)的首选语言之一。本文将详细阐述如何在Ubuntu Linux环境下部署Go开发环境,并结合蓝耘(Lanyun)提供的DeepSeek大模型API,手写一个支持多轮对话、上下文记忆的智能终端聊天工具。 一、 基础运行环境的准备与构建 任何上层应用的稳健运行都离不开坚实的底层系统支持。本次部署的目标环境为Ubuntu LTS系列(20.04/22.04/24.04),这些长期支持版本保证了系统库的稳定性与安全性。硬件层面,建议配置至少1GB的内存与5GB的磁盘空间,以满足编译器运行及依赖包缓存的需求。 1. 系统包索引更新与系统升级 在进行任何开发工具安装之前,首要任务是确保操作系统的软件包索引与现有软件处于最新状态。这不仅能修复已知的安全漏洞,还能避免因依赖库版本过旧导致的编译错误。 执行系统更新操作: sudoapt update &&sudoapt upgrade -y 该指令分为两部分:apt update 用于从软件源服务器获取最新的软件包列

By Ne0inhk
从AI工具使用者到创作者:我是如何开启技术变现之路的

从AI工具使用者到创作者:我是如何开启技术变现之路的

前言:这是一篇关于AI时代创作者成长的思考与分享,也是我参与"AI创作者AMA"活动的缘起故事。 一、AI时代的创作者困境 2025年,我发现自己陷入了一个奇怪的循环: 每天刷到各种AI工具的新闻——ChatGPT更新了、Midjourney出图更逼真了、Sora能生成视频了。我像收集游戏成就一样,注册了十几个AI账号,收藏了几百个提示词。 但半年过去了,我依然是AI工具的"收藏家",而不是AI时代的创作者。 问题出在哪里? * 缺乏实战场景:知道工具强大,但不知道用在什么场景 * 缺乏反馈机制:自己闷头摸索,不知道作品质量如何 * 缺乏变现路径:花了大量时间学习,却不知道如何转化为价值 * 缺乏同行交流:一个人摸索,效率极低 我相信很多开发者、设计师、内容创作者都有类似的困惑。 二、转机:一次意外的AMA活动 改变发生在上周。我在脉脉上刷到了一个活动——“AI创作者AMA第二期”。 AMA是"Ask Me

By Ne0inhk

Flutter 三方库 groq_sdk 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 LPU 推理的工业级生成式 AI 智能体应用

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 groq_sdk 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 LPU 推理的工业级生成式 AI 智能体应用 在鸿蒙(OpenHarmony)系统的端云一体化 AI 架构、智能助手或需要极致响应性能的生成式文本应用中,如何利用 Groq 云端强大的 LPU(Language Processing Unit)算力实现毫秒级的令牌生成?groq_sdk 为开发者提供了一套工业级的、针对 Groq Cloud API 进行深度优化的集成方案。本文将深入实战其在鸿蒙端 AI 业务逻辑层中的应用。 前言 什么是 Groq SDK?它不仅是一个简单的 HTTP 包装器,

By Ne0inhk

OpenClaw 的免费 AI 大模型及其配置方法

OpenClaw 中的“自由模型”可能意味着两种不同的东西,而混淆这两种模型正是大多数人浪费时间的地方。 有一种“免费”是真正意义上的免费,因为模型运行在本地,你只需要支付 CPU、内存、GPU 和电力费用。例如 Ollama 或你自行托管的 OpenAI 兼容运行时环境。 另一种是“免费套餐”,即托管服务提供商提供一定的配额、积分或 OAuth 访问权限。这种套餐虽然不错,但通常会有速率限制、策略限制,而且偶尔还会出现意外中断或流量突然上限的情况。 本指南篇幅较长,因为模型配置看似简单,但一旦遇到问题,例如工具调用速度变慢、出现 429 错误,或者某个代理使用的身份验证配置文件与预期不符等,就会发现其中的奥妙。我们将力求实用。 如果您是 OpenClaw 新手,想先了解基础知识,可以阅读 OpenClaw 简介及其工作原理。如果您已经运行了 OpenClaw,接下来我们来正确地连接模型。 OpenClaw

By Ne0inhk