当前位置: 首页 > news >正文

数据结构之二叉树

数据结构之二叉树

  • 数据结构之二叉树
    • 1. 什么是二叉树?
    • 2. 基本概念
    • 3. 二叉树的基本形态
    • 4. 二叉树的性质
    • 5. 特殊二叉树
    • 6. 二叉树的存储
    • 7. 二叉树的遍历
      • 7.1 前序遍历
      • 7.2 中序遍历
      • 7.3 后序遍历
      • 7.4 层次遍历
    • 8. 应用场景
    • 9. 实例代码
      • 9.1 示例树结构
      • 9.2 输出结果

数据结构之二叉树


1. 什么是二叉树?

二叉树(Binary Tree)是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点右子节点。二叉树可以为空(没有节点),或者由一个根节点和两棵互不相交的子树(左子树和右子树)组成。

二叉树的特点是:

  • 每个节点最多有两个子节点。
  • 左子树和右子树是有序的,不能互换。

2. 基本概念

  • 节点(Node):二叉树的基本单位,包含数据域和指针域。
  • 根节点(Root):二叉树的顶层节点,没有父节点。
  • 叶子节点(Leaf):没有子节点的节点。
  • 父节点(Parent):有子节点的节点。
  • 子节点(Child):某个节点的直接下级节点。
  • 深度(Depth):从根节点到某个节点的路径长度(根节点的深度为0)。
  • 高度(Height):从某个节点到叶子节点的最长路径长度(叶子节点的高度为0)。
  • 层次(Level):根节点为第0层,其子节点为第1层,以此类推。

3. 二叉树的基本形态

二叉树有以下几种基本形态:

  1. 空树:没有节点的二叉树。
  2. 只有一个根节点:根节点没有子节点。
  3. 只有左子树:根节点只有左子节点,右子节点为空。
  4. 只有右子树:根节点只有右子节点,左子节点为空。
  5. 左右子树都存在:根节点同时有左子节点和右子节点。

4. 二叉树的性质

二叉树具有以下重要性质:

  1. 性质1:在二叉树的第 i 层上,最多有 2^i 个节点 (i >= 0)。
    • 例如:
      • 第 0 层最多有 2^0 = 1 个节点(根节点)。
      • 第 1 层最多有 2^1 = 2 个节点。
  2. 性质2:深度为 k 的二叉树,最多有 2^(k+1) - 1 个节点 (k >= 0)。
    • 例如:
      • 深度为 0 的二叉树,最多有 2^(0+1) - 1 = 1 个节点。
      • 深度为 1 的二叉树,最多有 2^(1+1) - 1 = 3 个节点。
      • 深度为 2 的二树,最多有 2^(2+1) - 1 = 7 个节点。
  3. 性质3:对于任意一棵二叉树,如果叶子节点数为 n0,度为 2 的节点数为 n2,则满足关系式:n0 = n2 + 1
    • 说明:
      • 叶子节点是指没有子节点的节点。
      • 度为 2 的节点是指有两个子节点的节点。
  4. 性质4:具有 n 个节点的完全二叉树,其深度为:log2(n) 向下取整后加 1
    • 说明:
      • 完全二叉树是指除了最后一层外,其他层都是满的,最后一层的节点尽量靠左排列。
  5. 性质5:对于一棵完全二叉树,如果对节点从 0 开始编号,则:
    • 父节点为 i,则:
      • 左子节点编号为 2*i + 1
      • 右子节点编号为 2*i + 2
    • 子节点编号为 i,则:
      • 父节点编号为 (i - 1) // 2 (整数除法)

5. 特殊二叉树

  1. 满二叉树(Full Binary Tree)

    • 每一层的节点数都达到最大值,即第 i 层有 2^i 个节点。
    • 深度为 k 的满二叉树,总节点数为 2^(k+1) - 1。
  2. 完全二叉树(Complete Binary Tree)

    • 除了最后一层,其他层都是满的,且最后一层的节点尽量靠左排列。
    • 适合用数组存储。
  3. 二叉搜索树(Binary Search Tree, BST)

    • 左子树的所有节点值小于根节点值,右子树的所有节点值大于根节点值。
    • 中序遍历结果是有序的。
  4. 平衡二叉树(Balanced Binary Tree)

    • 任意节点的左右子树高度差不超过1。
    • 例如:AVL树、红黑树。

6. 二叉树的存储

  1. 链式存储

    • 使用节点对象和指针表示二叉树。
    • 每个节点包含数据域和两个指针域(左子节点和右子节点)。
    struct TreeNode {int value;TreeNode* left;TreeNode* right;TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}
    };
    
  2. 顺序存储

    • 使用数组存储完全二叉树。
    • 对于节点 i,左子节点为 2i + 1,右子节点为 2i + 2,父节点为 (i - 1) // 2(其中//表示整数除法)

7. 二叉树的遍历

  1. 前序遍历(Pre-order):根 -> 左 -> 右
  2. 中序遍历(In-order):左 -> 根 -> 右
  3. 后序遍历(Post-order):左 -> 右 -> 根
  4. 层次遍历(Level-order):按层从上到下、从左到右访问节点。

7.1 前序遍历

void preOrderTraversal(TreeNode* root) {if (root == nullptr) return; // 递归终止条件cout << root->value << " ";  // 访问根节点preOrderTraversal(root->left);  // 遍历左子树preOrderTraversal(root->right); // 遍历右子树
}

7.2 中序遍历

void inOrderTraversal(TreeNode* root) {if (root == nullptr) return;   // 递归终止条件inOrderTraversal(root->left);  // 遍历左子树cout << root->value << " ";    // 访问根节点inOrderTraversal(root->right); // 遍历右子树
}

7.3 后序遍历

void postOrderTraversal(TreeNode* root) {if (root == nullptr) return;     // 递归终止条件postOrderTraversal(root->left);  // 遍历左子树postOrderTraversal(root->right); // 遍历右子树cout << root->value << " ";      // 访问根节点
}

7.4 层次遍历

#include <queue>void levelOrderTraversal(TreeNode* root) {if (root == nullptr) return;queue<TreeNode*> q;q.push(root); // 根节点入队while (!q.empty()) {TreeNode* node = q.front(); // 取出队首节点q.pop();cout << node->value << " "; // 访问当前节点if (node->left != nullptr) {q.push(node->left); // 左子节点入队}if (node->right != nullptr) {q.push(node->right); // 右子节点入队}}
}

8. 应用场景

  • 二叉搜索树:用于动态查找、插入和删除操作。
  • 堆(Heap):用于优先队列。
  • 哈夫曼树:用于数据压缩。
  • 表达式树:用于编译器的语法分析。

9. 实例代码

  1. 节点定义:使用 TreeNode 结构表示二叉树的节点,每个节点包含一个值指向左右子节点的指针。
  2. 遍历方法:
    • 前序、中序、后序遍历使用递归实现。
    • 层次遍历使用队列实现,通过逐层访问节点。
  3. 树的构建createSampleTree 函数手动构建了一棵简单的完全二叉树。
#include <iostream>
#include <queue> // 用于层次遍历
using namespace std;// 定义二叉树的节点结构
struct TreeNode {int value;             // 数据域TreeNode* left;        // 左子节点指针TreeNode* right;       // 右子节点指针// 构造函数TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}
};// 前序遍历:根 -> 左 -> 右
void preOrderTraversal(TreeNode* root) {if (root == nullptr) return;cout << root->value << " ";           // 访问根节点preOrderTraversal(root->left);        // 遍历左子树preOrderTraversal(root->right);       // 遍历右子树
}// 中序遍历:左 -> 根 -> 右
void inOrderTraversal(TreeNode* root) {if (root == nullptr) return;inOrderTraversal(root->left);         // 遍历左子树cout << root->value << " ";           // 访问根节点inOrderTraversal(root->right);        // 遍历右子树
}// 后序遍历:左 -> 右 -> 根
void postOrderTraversal(TreeNode* root) {if (root == nullptr) return;postOrderTraversal(root->left);       // 遍历左子树postOrderTraversal(root->right);      // 遍历右子树cout << root->value << " ";           // 访问根节点
}// 层次遍历:从到下,从左到右
void levelOrderTraversal(TreeNode* root) {if (root == nullptr) return;queue<TreeNode*> q; // 辅助队列q.push(root); // 根节点入队while (!q.empty()) {TreeNode* node = q.front(); // 获取队首节点q.pop();                    // 出队cout << node->value << " "; // 访问当前节点if (node->left != nullptr) {q.push(node->left);     // 左子节点入队}if (node->right != nullptr) {q.push(node->right);    // 右子节点入队}}
}// 创建一个简单的二叉树
TreeNode* createSampleTree() {// 创建节点TreeNode* root = new TreeNode(1);root->left = new TreeNode(2);root->right = new TreeNode(3);root->left->left = new TreeNode(4);root->left->right = new TreeNode(5);root->right->left = new TreeNode(6);root->right->right = new TreeNode(7);return root; // 返回根节点
}int main() {// 创建示例二叉树TreeNode* root = createSampleTree();// 打印各类遍历结果cout << "前序遍历 (Pre-order): ";preOrderTraversal(root);cout << endl;cout << "中序遍历In-order): ";inOrderTraversal(root);cout << endl;cout << "后序遍历 (Post-order): ";postOrderTraversal(root);cout << endl;cout << "层次遍历 (Level-order): ";levelOrderTraversal(root);cout << endl;return 0;
}

9.1 示例树结构

程序中创建的二叉树结构如下:

      1/   \2     3/ \   / \4   5 6   7

9.2 输出结果

运行以上代码后,输出结果如下:

前序遍历 (Pre-order): 1 2 4 5 3 6 7
中序遍历 (In-order): 4 2 5 1 6 3 7
后序遍历 (Post-order): 4 5  6 7 3 1
层次遍历 (Level-order): 1 2 3 4 5 6 7

相关文章:

数据结构之二叉树

数据结构之二叉树 数据结构之二叉树1. 什么是二叉树&#xff1f;2. 基本概念3. 二叉树的基本形态4. 二叉树的性质5. 特殊二叉树6. 二叉树的存储7. 二叉树的遍历7.1 前序遍历7.2 中序遍历7.3 后序遍历7.4 层次遍历 8. 应用场景9. 实例代码9.1 示例树结构9.2 输出结果 数据结构之…...

华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载&#xff1a; AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…...

《图解设计模式》笔记(十)用类来表现

二十二、Command模式:命令也是类 一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。 若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表…...

Scrapy:任务队列底层设计详解

Scrapy 中队列设计详解 1. 概述 Scrapy 的队列系统是其调度器&#xff08;Scheduler&#xff09;的核心组件之一&#xff0c;负责存储和管理待抓取的请求。Scrapy 实现了两种类型的队列&#xff1a; 内存队列&#xff1a;请求存储在内存中&#xff0c;重启后数据丢失磁盘队列…...

zola + github page,用 workflows 部署

之前的Zola都是本地build之后&#xff0c;再push到github上&#xff0c;这种方式很明显的弊端就是只能在本地编辑&#xff0c;而不能通过github编辑&#xff0c;再pull到本地&#xff0c;缺乏了灵活性。因此将zola用workflows来部署。 repo地址&#xff1a;https://github.com/…...

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …...

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了&#xff1f;检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址&#xff0c;因此对于增强用户的…...

今日AI和商界事件(2025-02-14)

今日AI大事件主要包括以下几个方面&#xff1a; 一、苹果新品预告 事件概述&#xff1a;苹果CEO蒂姆库克在社交媒体发布7秒视频&#xff0c;配文“准备好迎接家庭的新成员”&#xff0c;并宣布2月19日将有新品发布。知名科技记者马克古尔曼称&#xff0c;新款低端iPhone SE将…...

【黑马点评优化】1-使用JWT登录认证+redis实现自动续期

1-使用JWT登录认证redis实现自动续期 0 前言1 原先的redis实现登录鉴权2 JWT登录认证Redis自动续期2.1 认证&#xff08;identification&#xff09;授权 &#xff08;authorization&#xff09;和鉴权&#xff08;Authorization&#xff09;2.1.1 认证&#xff08;identificat…...

一个让Stable Diffusion更稳定、更易用的Github开源项目

2023除了ChatGPT大火&#xff0c;Stable Diffusion同样也是非常火热&#xff0c;Stable Diffusion是一个Github开源项目&#xff0c;很多爱好者都会本地安装&#xff0c;但面对一些初学者来说&#xff0c;在安装、配置和使用过程中还是会经常出现很多问题&#xff0c;特别不了解…...

Mac之JDK安装

Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统&#xff0c;打开中断命令&#xff0c;输入: uname -a Compressed Archive 是压缩文档&#xff0c;下载的是一个 .tar.gz 压缩包 D…...

深入Flask:如何优雅地处理HTTP请求与响应

哈喽,大家好,我是木头左! 本文将带你深入了解如何在Flask中优雅地处理HTTP请求和响应,让你的应用更加高效、安全和用户友好。 创建一个简单的Flask应用 让从创建一个最简单的Flask应用开始: from flask import Flaskapp = Flask(__name__)@app.route(/) def...

kron积计算mask类别矩阵

文章目录 1. 生成类别矩阵如下2. pytorch 代码3. 循环移动矩阵 1. 生成类别矩阵如下 2. pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0…...

Redis实现消息队列

什么是消息列队。 消息队列是一种应用间的异步协作机制&#xff0c;同时消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削峰等问题。实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。市面上的 M…...

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究&#xff0c;如何实现一个视频会议功能&#xff0c;但是找了好多资料都不太理想&#xff0c;最终参考了一个文章 WebRTC实现双端音视频聊天&#xff08;Vue3 SpringBoot&#xff09; 只不过&#xff0c;它的实现效果里面只会播放本地的mp4视频文件&…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书&#xff0c;书名为《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》。 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...

【设计模式】【行为型模式】命令模式(Command)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…...

1.14学习总结

日常刷题单 刷了题目后&#xff0c;对于排序方法更加熟练&#xff0c;手搓代码的速度也得到了提高。 感觉字符串还不熟练&#xff0c;高精度更是云里雾里&#xff0c;上升空间极大。 同时看见今晚有个入门难度的测试&#xff0c;去练了练手&#xff0c;想看看自己是什么成分&…...

QxOrm生成json

下载Qxorm-1.5版本 使用vs打开项目&#xff0c;直接生成即可&#xff1a; lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…...

伯克利 CS61A 课堂笔记 09 —— Data Abstraction

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Data Abstraction 数据抽象 Ⅰ Rational Numbers Ⅱ Rational Number Arithmetic 02 Pairs 对 Ⅰ Representing Pairs Using Lists Ⅱ Re…...

高频 SQL 50 题(基础版)

高频 SQL 50 题&#xff08;基础版&#xff09; 查询连接聚合函数排序和分组高级查询和连接子查询高级字符串函数 / 正则表达式 / 子句 查询 链接: link 链接: link 链接: link 链接: link 链接: link 连接 链接: 高频 SQL 50 题基础版_1378. 使用唯一标识码替换员工ID 链接…...

HtmlRAG:RAG系统中,HTML比纯文本效果更好

HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法&#xff0c;在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路&#xff0c;将提纯后的…...

python学opencv|读取图像(六十二)使用cv2.morphologyEx()形态学函数实现图像梯度处理

【1】引言 前序已经学习了腐蚀和膨胀的单独作用函数&#xff0c;还研究了按照不同顺序调用腐蚀和膨胀函数调整图像效果&#xff0c;相关文章包括且不限于&#xff1a; python学opencv|读取图像&#xff08;六十一&#xff09;先后使用cv2.dilate()函数和cv2.erode()函数实现图…...

10G EPON光模块

一、10G EPON对称光模块 工作模式&#xff1a;上行突发接收、下行连续发射。 工作原理&#xff1a;当需要发送信号时&#xff0c;系统信号通过光模块的电接口把信号传送到驱动芯片&#xff0c;芯片处理后&#xff0c;驱动激光器发出调制光信号&#xff0c;经光纤发到远端&…...

RocketMQ与kafka如何解决消息丢失问题?

0 前言 消息丢失基本是分布式MQ中需要解决问题&#xff0c;消息丢失时保证数据可靠性的范畴。如何保证消息不丢失程序员面试中几乎不可避免的问题。本文主要说明RocketMQ和Kafka在解决消息丢失问题时&#xff0c;在生产者、Broker和消费者之间如何解决消息丢失问题。 1.Rocket…...

每日Attention学习23——KAN-Block

模块出处 [SPL 25] [link] [code] KAN See In the Dark 模块名称 Kolmogorov-Arnold Network Block (KAN-Block) 模块作用 用于vision的KAN结构 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional as F import mathclass Swish(nn.Module)…...

【前端】ES6新特性汇总

本文作者&#xff1a; slience_me ES6新特性汇总 1. let声明变量 1&#xff09;let作用域 // var 声明的变量往往会越域 // let 声明的变量有严格的局部作用域 {var a 1;let b 2; } console.log(a); // 1 console.log(b); // 报错 b is not defined2&#xff09;声明次数 …...

2024 CyberHost 语音+图像-视频

项目&#xff1a;CyberHost: Taming Audio-driven Avatar Diffusion Model with Region Codebook Attention 音频驱动的身体动画面临两个主要挑战&#xff1a;&#xff08;1&#xff09;关键人体部位&#xff0c;如面部和手部&#xff0c;在视频帧中所占比例较小&#x…...

Git命令摘录

使用 Git 升级软件通常是指通过 Git 仓库获取软件的最新版本或更新代码。以下是详细的步骤和方法&#xff1a; 1. 克隆软件仓库 如果这是你第一次获取软件代码&#xff0c;可以使用 git clone 命令将远程仓库克隆到本地。 git clone <仓库地址> 例如&#xff1a; git cl…...

DeepSeek24小时写作机器人,持续创作高质量文案

内容创作已成为企业、自媒体和创作者的核心竞争力。面对海量的内容需求&#xff0c;人工创作效率低、成本高、质量参差不齐等问题日益凸显。如何在有限时间内产出高质量内容&#xff1f;DeepSeek写作机器人&#xff0c;一款24小时持续创作的智能工具&#xff0c;为企业和个人提…...

Python 面向对象的三大特征

前言&#xff1a;本篇讲解面向对象的三大特征&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff0c;还有比较细致的&#xff08;类属性类方法&#xff0c;静态方法&#xff09;&#xff0c;分步骤讲解&#xff0c;比较适合理清楚三大特征的思路 面向对象的…...

在mac中安装Colima使用docker(替代Docker Desktop)

目录 推荐方案&#xff1a;Colima Docker CLI&#xff08;原生 ARM 支持&#xff09; 步骤 1: 安装必需工具 步骤 2: 启动 Colima (优化 ARM 虚拟机) 步骤 3: 绑定 Docker CLI 到 Colima 步骤 4: 验证 Docker 运行 方案对比与注意事项 常见陷阱 卸载残留配置&#xff…...

YOLO11网络结构以及改进1

YOLO11 1.YOLO11网络结构图在哪里&#xff1f;2.对应的网络结构图3.每一个模块详解3.1 Conv模块3.2关于卷积模块3.3 关于给各个模块指定参数的细节 4.加入CBAM 1.YOLO11网络结构图在哪里&#xff1f; 2.对应的网络结构图 3.每一个模块详解 3.1 Conv模块 位置&#xff1a;ultr…...

EtherNetIP转ModbusTCP网关,给风电注入“超级赛亚人”能量

EtherNetIP转ModbusTCP网关&#xff0c;给风电注入“超级赛亚人”能量 在工业通信领域&#xff0c;常常需要将不同网络协议的设备和系统连接起来&#xff0c;以实现更高效的数据交互和系统集成。比如&#xff0c;把EtherNet/IP设备及其网络连接到ModbusTCP网络系统&#xff0c…...

30天开发操作系统 第 20 天 -- API

前言 大家早上好&#xff0c;今天我们继续努力哦。 昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢&#xff1f;因为它是由应用程序来调用(操作)系统中的功能来完…...

DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例&#xff1a;让AI给你写一份小众编辑器(EverEdit)的语法着色文件 1.1 背景 AI能力再强&#xff0c;如果不能在企业的自有业务上产生助益&#xff0c;那基本也是一无是处。将企业的自有业务上传到线上训练&#xff0c;那是脑子进水的做法&#xff…...

在香橙派5 NPU上使用Yolov5

【香橙派】使用NPU部署Yolov5的完整解决方案 香橙派使用NPU部署Yolov5的完整解决方案 Orangepi 5 Pro(香橙派5pro)部署yolov5 RK3588实战&#xff1a;调用npu加速&#xff0c;yolov5识别图像、ffmpeg发送到rtmp服务器 香橙派5 RK3588 yolov5模型转换rknn及部署踩坑全记录 orang…...

常用排序算法

1. 基础排序算法 1.1 冒泡排序&#xff08;Bubble Sort&#xff09; 原理&#xff1a; 依次比较相邻元素&#xff0c;将较大的元素逐步"冒泡"到右侧。 def bubble_sort(arr):n len(arr)for i in range(n):swapped Falsefor j in range(0, n-i-1):if arr[j] >…...

MySQL判空函数--IFNULL函数的使用

文章目录 IFNULL函数介绍IFNULL函数的语法举例相关扩展 IFNULL函数介绍 在MySQL中&#xff0c;IFNULL函数用于判断给定的表达式是否为NULL。如果表达式为NULL&#xff0c;则IFNULL函数返回指定的替代值&#xff1b;如果表达式不为NULL&#xff0c;则返回表达式本身的值。 IFN…...

Git 设置代理

设置 HTTP 和 HTTPS 代理 运行以下命令来配置 Git 的 HTTP 和 HTTPS 代理&#xff1a; git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https://127.0.0.1:7890 验证代理设置 你可以通过以下命令检查代理是否设置成功&#xff1a; g…...

nsc account 及user管理

从安全角度&#xff0c;推荐使用sign 模式进行nats account及用户管理 把权限放到account level 用户密码泄露可以通过快速更换用户可以设置过期日期&#xff0c;进行安全轮换 此外通过nsc 管理用户和权限&#xff0c;可以统一实现全局管控&#xff0c;包括subject管控&#…...

llama.cpp部署 DeepSeek-R1 模型

一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型&#xff08;及其他模型&#xff09;。主要目标llama.cpp是在各种硬件&#xff08;本地和云端&#xff09;上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现&#xff0c;无任何依赖项Apple 芯片是一流的——通过 A…...

NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)

循环嵌套 循环嵌套的使⽤ while &#xff0c; do while &#xff0c; for &#xff0c;这三种循环往往会嵌套在⼀起才能更好的解决问题&#xff0c;就是我们所说的&#xff1a;循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如&#xff1a; 写⼀个代码&#xff0c;打印⼀个乘法⼝…...

用什么办法能实现ubuntu里面运行的自己开发的python程序能自动升级。

要实现Ubuntu中自己开发的Python程序自动升级&#xff0c;可以通过以下几种方式&#xff1a; 1. 使用 Git 仓库 定时任务 如果你的Python程序托管在Git仓库中&#xff0c;可以通过定时拉取最新代码来实现自动升级。 步骤&#xff1a; 确保Python程序在Git仓库中。在Ubuntu上…...

org.apache.kafka.common.errors.TimeoutException

个人博客地址&#xff1a;org.apache.kafka.common.errors.TimeoutException | 一张假钞的真实世界 使用kafka-console-producer.sh向远端Kafka写入数据时遇到以下错误&#xff1a; $ bin/kafka-console-producer.sh --broker-list 172.16.72.202:9092 --topic test This is …...

【AI实践】deepseek支持升级git

当前Windows 11 WSL的git是2.17&#xff0c;Android Studio提示需要升级到2.19版本 网上找到指导文章 安装git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…...

IntelliJ IDEA 2024.1.4版无Tomcat配置

IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后&#xff0c;调试项目发现找不到Tomcat服务&#xff1a; 按照常规操作添加&#xff0c;发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮&#xff0c;进入插件窗口&#xff0c;搜索T…...

利用Firewalld和Iptables实现IP端口限制与开放

这里写目录标题 前言一、FirewalldIP端口限制1.1 确认启动状态1.2 启动Firewalld1.3 查看当前连接到Nacos的IP1.4 添加访问规则1.5 重新加载配置1.6 查看当前活动的规则列表1.7 移除某个规则 二、Firewalld 开放端口2.1 开放 6379端口2.2 重新加载防火墙2.3 验证规则 三、Iptab…...

两步在 Vite 中配置 Tailwindcss

第一步&#xff1a;安装依赖 npm i -D tailwindcss tailwindcss/vite第二步&#xff1a;引入 tailwindcss 更改配置 // src/main.js import tailwindcss/index// vite.config.js import vue from vitejs/plugin-vue import tailwindcss from tailwindcss/viteexport default …...

单片机原理与运用

个人主页&#xff1a;java之路-CSDN博客(期待您的关注) 目录 一、走进单片机的世界 二、单片机是什么 &#xff08;一&#xff09;定义与本质 &#xff08;二&#xff09;与普通计算机的区别 三、单片机的工作原理深度剖析 &#xff08;一&#xff09;硬件组成及功能 &am…...