【算法通关指南:数据结构与算法篇 】二叉树相关算法题:1.新二叉树 2.二叉树的遍历

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

文章目录

前言

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

二、新二叉树

2.1题目

链接:新二叉树

在这里插入图片描述

2.2 算法原理

(1)建树:和常规的链式存储方式式⼀致。
因为结点是字符,所以可以直接用ASCII 码值当做下标来使用。比如’a’ 直接映射成97 ,l[97] 里面就存着’a’ 的左儿子,r[97]就存着’a’ 的右儿子,以此类推,建立二叉树。
2. 先序遍历:根左右。

2.3代码

#include<iostream> using namespace std;constint N =300;char l[N], r[N];voiddfs(char root){ cout << root;if(l[root]!='*')dfs(l[root]);if(r[root]!='*')dfs(r[root]);}intmain(){int n; cin >> n;char root; cin >> root; cin >> l[root]>> r[root];for(int i =2; i <= n; i++){char u; cin >> u; cin >> l[u]>> r[u];}dfs(root);return0;}

三、 二叉树的遍历

3.1题目

链接:二叉树的遍历

在这里插入图片描述

3.2 算法原理

仿照之前讲解二叉树的方式:建图+dfs

3.3代码

#include<iostream> using namespace std;constint N =1e6+10;int l[N], r[N];voiddfs1(int root){ cout << root <<" ";if(l[root])dfs1(l[root]);if(r[root])dfs1(r[root]);}voiddfs2(int root){if(l[root])dfs2(l[root]); cout << root <<" ";if(r[root])dfs2(r[root]);}voiddfs3(int root){if(l[root])dfs3(l[root]);if(r[root])dfs3(r[root]); cout << root <<" ";}intmain(){int n; cin >> n;for(int i =1; i <= n; i++){ cin >> l[i]>> r[i];}dfs1(1); cout << endl;dfs2(1); cout << endl;dfs3(1); cout << endl;return0;}

总结与每日励志

✨本文介绍了两个二叉树相关算法题:《新二叉树》和《二叉树的遍历》。在《新二叉树》中,通过ASCII码值映射节点建立二叉树,并实现先序遍历;《二叉树的遍历》则通过链式存储和深度优先搜索(DFS)完成前序、中序和后序遍历。代码简洁高效,适合算法初学者练习。文章强调以实战提升算法能力,鼓励读者坚持学习,相信努力终会收获成长。

在这里插入图片描述

Read more

安装WSL及Ubuntu遇到问题安全频道支持出错

问题描述 安装wsl及ubuntu的时候总数提示安全频道支持出错 原因 这个 “安全频道支持出错”,在 安装 WSL / Ubuntu 时非常常见,本质上不是 WSL 本身坏了,而是 Windows 的安全通信(TLS/SSL / 证书)出了问题。 一、这个错到底是什么意思? 安全频道(Security Channel / Schannel) 是 Windows 用来做 HTTPS / TLS 加密通信 的组件。 安装 WSL / Ubuntu 的过程里,需要: 访问 Microsoft Store 或从 微软服务器下载发行版 或通过 HTTPS 拉取包 一旦 Windows 的: TLS

By Ne0inhk
HarmonyOS应用开发实战(基础篇)Day09-《构建布局详解下》

HarmonyOS应用开发实战(基础篇)Day09-《构建布局详解下》

相对布局 (RelativeContainer) RelativeContainer 是 ArkUI 中一种基于相对定位规则的布局容器,允许子组件通过与其他组件或容器边缘的相对关系来确定自身位置。每个子组件需通过 id 标识,并通过 alignRules 属性声明其相对于其他元素的对齐规则(如“位于 A 的右侧”、“底部对齐 B”等)。 尽管功能强大,但 RelativeContainer 在实际项目中使用频率较低,主要原因包括: * 学习成本高:需理解复杂的对齐规则链; * 维护难度大:组件间耦合紧密,修改一处可能影响多处布局; * 响应式支持弱:难以适配多尺寸屏幕; * 性能开销:布局计算复杂度高于线性或弹性布局。 因此,除非有特殊需求(如自定义复杂仪表盘、拖拽编辑器、游戏 UI 等),一般推荐优先使用 Column、Row、Flex 或 Stack。 📚 深入学习: 若您对高级布局感兴趣,可查阅官方文档:

By Ne0inhk
【高级终端Termux】在安卓手机/平板上使用Termux 搭建 Debian 环境并运行 PC 级 Linux 应用教程(含安装WPS,VS Code)

【高级终端Termux】在安卓手机/平板上使用Termux 搭建 Debian 环境并运行 PC 级 Linux 应用教程(含安装WPS,VS Code)

Termux 搭建 Debian 环境并运行 PC 级 Linux 应用教程 一、前言 1. 背景 众所周知,最新搭载澎湃OS和鸿蒙OS的平板都内置了PC级WPS,办公效率直接拉满(板子终于从“泡面盖”升级为“生产力”了)。但问题来了:如果不是这两个系统,难道我们只能继续用平板盖泡面吗?当然不是!折腾了很长时间后,总算找到了一个好玩的东西:高级终端Termux 。现在,不仅能随时随地用WPS改文档,还能VSCode优雅地敲代码,再也不用背着电脑乱跑了。 由于每次搭建环境时都要去不同的平台找不同功能,有时还找不到,所以我决定自己写一篇博客,方便自己以后再搭建时直接“Ctrl C + Ctrl V”,顺便分享给有同样需求的小伙伴们。话不多说,直接开整! 2. 准备工作 * 一部安卓手机:性能越好,折腾起来越顺畅。 * Termux 应用: 不想去F-droid下载的看过来

By Ne0inhk
Flutter for OpenHarmony:darq 让 Dart 拥有 C# LINQ 般的超能力(集合查询与变换神器) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:darq 让 Dart 拥有 C# LINQ 般的超能力(集合查询与变换神器) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter for OpenHarmony:darq 让 Dart 拥有 C# LINQ 般的超能力(集合查询与变换神器) 深度解析与鸿蒙适配指南 前言 如果你是从 .NET/C# 转到 Dart/Flutter 开发的,你一定无比怀念 LINQ (Language Integrated Query)。 虽然 Dart 的 Iterable 提供了 map, where, reduce 等基础方法,但在处理复杂数据集合(如多重排序、连接 Join、分组 GroupBy、去重)时,原生 API 依然显得力不从心,

By Ne0inhk