【算法通关指南:数据结构与算法篇 】二叉树相关算法题: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

【实用工具】无需安装!JupyterLab Online 在线运行 Python 代码(附完整教程)

【实用工具】无需安装!JupyterLab Online 在线运行 Python 代码(附完整教程)

【实用工具】无需安装!JupyterLab Online 在线运行 Python 代码(附完整教程) 文章目录 * 【实用工具】无需安装!JupyterLab Online 在线运行 Python 代码(附完整教程) * 一、为什么推荐JupyterLab Online? * 二、JupyterLab Online 完整使用教程(以运行matplotlib绘图代码为例) * 1. 进入在线环境 * 2. 创建Python文件 * 3. 运行代码(以绘图代码为例) * 4. 保存/下载文件(关键!) * 5. 关闭/退出 * 三、适用场景 & 注意事项 * ✅ 适用场景 * ❗ 注意事项 * 四、总结 一、为什么推荐JupyterLab Online?

By Ne0inhk
《C++ 递归、搜索与回溯》第1题:汉诺塔问题

《C++ 递归、搜索与回溯》第1题:汉诺塔问题

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 前言: 聚焦算法题实战,系统讲解三大核心板块:“精准定位最优解”——优选算法,“简化逻辑表达,系统性探索与剪枝优化”——递归与回溯,“以局部最优换全局高效”——贪心算法,讲解思路与代码实现,帮助大家快速提升代码能力 目录 前言: 递归,搜索与回溯算法前置知识 1. 汉诺塔 算法原理(递归): 思路: 算法流程: 解法代码(C++): 博主手记(字体还请见谅哈): 结尾: 递归,搜索与回溯算法前置知识 1. 汉诺塔 题目链接: 面试题 08.

By Ne0inhk
C++入门看这一篇就够了——超详细讲解(120000多字详细讲解,涵盖C++大量知识)

C++入门看这一篇就够了——超详细讲解(120000多字详细讲解,涵盖C++大量知识)

目录 一、面向对象的思想 二、类的使用 1.类的构成 2.类的设计 三、对象的基本使用 四、类的构造函数 1.构造函数的作用 2.构造函数的特点 3.默认构造函数 3.1.合成的默认构造函数 3.2.手动定义的默认构造函数 四、自定义的重载构造函数 五、拷贝构造函数 1.手动定义的拷贝构造函数 2.合成的拷贝构造函数 3.什么时候调用拷贝构造函数 六、赋值构造函数 七、析构函数 八、this指针 九、类文件的分离 十、静态数据 1.静态数据成员 2.静态成员函数 十一、

By Ne0inhk
求最大公约数(gcd)与最小公倍数(lcm)【C/C++】

求最大公约数(gcd)与最小公倍数(lcm)【C/C++】

大家好啊,欢迎来到本博客( •̀ ω •́ )✧,我将带领大家详细的了解最大公约数的思想与解法。 一、什么是公约数 公约数,也称为公因数,是指两个或多个整数共有的因数。具体来说,如果一个整数能被两个或多个整数整除,那么这个整数就是这些整数的公约数。 例如,考虑整数12和18: * 12的因数有 :1, 2, 3, 4, 6, 12 * 18的因数有:1, 2, 3, 6, 9, 18 12和18的公约数是它们共有的因数,即:1, 2, 3, 6 附:lcm是最小公倍数 定理:a、b 两个数的最小公倍数(lcm)乘以它们的最大公约数(gcd)等于 a 和 b 本身的乘积。 如:gcd(

By Ne0inhk