树--二叉树(C语言纯手凹)

news2024/11/15 14:08:54

目录

1.什么是树?(不深入,仅做了解)

2.树的表示方式

2.1孩子兄弟表示法(左孩子右兄弟)

 2.2孩子表示法

2.3双亲表示法

 3.什么是二叉树

4.二叉树分类

4.1满二叉树

4.2完全二叉树

4.3二叉搜索树(二叉查找树、二叉排序树)

4.4平衡二叉搜索树(AVL树)

 5.二叉树的存储结构

6.二叉树性质

6.1若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1) 个结点

6.2 若规定根节点的层数为1,则深度为h的二叉树的最大结点数(满二叉)是2^h- 1(等比数列求和)

6.3对任何一棵二叉树, 如果度为0其叶结点个数为 n0, 度为2的分支结点个数为 n2,则有n0=n2 +1

 (公式记住就好)

6.4 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h = Log 2 (N + 1)(由2取对数可推)

7.二叉树性质相关选择题

7.1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( B )

7.2.在具有 2n 个结点的完全二叉树中,叶子结点个数为(A )

7.3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( B )

8.二叉树链式结构的遍历

8.1深度优先遍历

8.2广度优先遍历

 9.实现

9.1前序遍历的实现

9.2中序遍历的实现

9.3后序遍历的实现

9.4前中后序遍历有关的选择题

9.5层序遍历(广度优先遍历)的实现

 10.有关二叉树的OJ题目

10.1  144. 二叉树的前序遍历 - 力扣(LeetCode)

10.2  94. 二叉树的中序遍历 - 力扣(LeetCode)

10.3  145. 二叉树的后序遍历 - 力扣(LeetCode)

10.4  104. 二叉树的最大深度 - 力扣(LeetCode)

10.5110. 平衡二叉树 - 力扣(LeetCode)


1.什么是树?(不深入,仅做了解)

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。 有一个特殊的结点,称为根结点,根节点没有前驱结点,除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继 因此,树是递归定义的。

 

 A为根节点,#为NULL,D、E为叶节点。

判断下面的是不是树?

 注意这个是非树,需要知道树的性质:

1.每个节点(除根节点外)有且只有一个父节点

2.子树之间不相连

3.一颗n节点的树有n-1条边

4.0节点为空树

 

节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6

叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I...等节点为叶节点

非终端节点或分支节点:度不为0的节点; 如上图:D、E、F、G...等节点为分支节点

双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B 的父节点

孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节 点

兄弟节点:具有相同父节点的节点互称为兄弟节点; 如上图:B、C是兄弟节点

树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6

节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;(也有根为第0层的说法)

树的高度或深度:树中节点的最大层次; 如上图:树的高度为4

节点的祖先:从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先

子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙

森林:由m(m>0)棵互不相交的多颗树的集合称为森林。

2.树的表示方式

2.1孩子兄弟表示法(左孩子右兄弟)

typedef int DataType;
struct Node
{
    struct Node* _firstChild1;    // 第一个孩子节点
    struct Node* _pNextBrother;   // 指向其下一个兄弟节点
    DataType _data;               // 节点数据域
};

 

 2.2孩子表示法

typedef int DataType;
struct Node
{
    struct Node* _Child1;    // 第1个孩子节点
    struct Node* _Child2;    // 第2个孩子节点
    struct Node* _Child3;    // 第3个孩子节点
    struct Node* _Child4;    // 第4个孩子节点
    //...(可能有很多个孩子节点)
};

 有很多孩子节点就不适用了,一般用于二叉树。

2.3双亲表示法

typedef int DataType;
#define MAXX 100
//树的节点
typedef struct ParentTreeNode
{
    DataType data;
    int parent;
}PTNode;
//树的定义
typedef struct ParentTree
{
    PTNode arr[MAXX];//数组结构
    int num;//节点数
}PTree;

 3.什么是二叉树

二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

特点:

1. 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。

2. 二叉树的子树有左右之分,其子树的次序不能颠倒

4.二叉树分类

4.1满二叉树

一个二叉树,如果每一个层的结点数都达到最大值(2个),则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1(计算等会讲) ,则它就是满二叉树。

4.2完全二叉树

完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。除了底层节点可能没填满,其他层每个节点的度都为二叉树最大(2个),并且底层的节点都集中在底层靠左边若干位置(不靠左就不是),若底层为第h层,则最后一层可能有1~2^(h-1)个节点。满二叉树是一种特殊的完全二叉树。

4.3二叉搜索树(二叉查找树、二叉排序树)

二叉搜索树是有数值的,是一个有序树,每个节点满足下列规则:

1.若它的左子树不为空,则左子树上所有节点的值都小于它的根节点的值;(别理解错了,好好理解一下)

2.若它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值;

3.它的左右子树都为二叉搜索树;

总结:左小右大。

4.4平衡二叉搜索树(AVL树)

平衡二叉树又名为AVL树,它可以是空树,或者它的左右两个子树的高度(深度)差的绝对值(abs函数)不超过1,并且左右两个子树都是一颗平衡二叉树。


 

 5.二叉树的存储结构

二叉树一般可以使用两种结构存储,一种顺序存储(数组),一种链式存储(指针)

一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储,所以一般使用链式存储的方式。

链式存储:

 顺序存储(按照树的层次遍历顺序来存储节点):

6.二叉树性质


6.1若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1) 个结点

6.2 若规定根节点的层数为1,则深度为h的二叉树的最大结点数(满二叉)是2^h- 1(等比数列求和)

6.3对任何一棵二叉树, 如果度为0其叶结点个数为 n0, 度为2的分支结点个数为 n2,则有n0=n2 +1

 (公式记住就好)

6.4 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h = Log 2 (N + 1)(由2取对数可推)

7.二叉树性质相关选择题

7.1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( B )

A 不存在这样的二叉树  B 200  C 198  D 199

解析:性质6.3秒了

7.2.在具有 2n 个结点的完全二叉树中,叶子结点个数为(A )

A n  B n+1  C n-1  D n/2

解析:

7.3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( B )

A 11 B 10 C 8 D 12

解析:由题意知道是完全二叉树,估算一下2^9 - 1== 512(满二叉树9层节点数),那么531就要排到10层了,所以B。

8.二叉树链式结构的遍历

二叉树主要有两种遍历方式:深度优先遍历,广度优先遍历。

8.1深度优先遍历

先往深度遍历,遇到子节点时再往回遍历,深度优先遍历又分为 前序遍历(NLR)、中序遍历(LNR)、后序遍历(LRN),N-根,L-根的左子树,R-根的右子树,根节点是必定访问的,所以顺序是根据根节点的访问顺序命名的。

 

8.2广度优先遍历

设二叉树的 根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问 树的结点的过程就是层序遍历。

 9.实现

9.1前序遍历的实现

#include<stdio.h>

typedef int DataType;
//树节点
typedef struct TreeNode
{
	DataType data;//数据域
	struct TreeNode* left;//左子树
	struct TreeNode* right;//右子树
}TN;

//构建树
void CreatTree(TN* tree, TN* lefttree, TN* righttree,DataType x)
{
	tree->data = x;
	tree->left = lefttree;//连接左树
	tree->right = righttree;//连接右树
}

//前序遍历//递归实现
void PrefaceTraversal(TN* tree)
{
	if (tree == NULL)//临界条件--叶子节点
	{
		printf("NULL ");
		return;
	}
	printf("%d ", tree->data);//访问根节点
	PrefaceTraversal(tree->left);//访问左子树
	PrefaceTraversal(tree->right);//访问右子树
}

int main()
{
	//搭建一颗树
	TN tree1,tree2,tree3,tree4,tree5,tree6,tree7;
	CreatTree(&tree1, &tree2, &tree3, 1);
	CreatTree(&tree2, &tree4, &tree5, 2);
	CreatTree(&tree3, &tree6, &tree7, 3);
	CreatTree(&tree4, NULL, NULL, 4);
	CreatTree(&tree5, NULL, NULL, 5);
	CreatTree(&tree6, NULL, NULL, 6);
	CreatTree(&tree7, NULL, NULL, 7);
	PrefaceTraversal(&tree1);//访问

	return 0;
}

 

9.2中序遍历的实现

//中序遍历//递归实现
void MidTraversal(TN* tree)
{
	if (tree == NULL)//临界条件--叶子节点
	{
		printf("NULL ");
		return;
	}
	MidTraversal(tree->left);//访问左子树
	printf("%d ", tree->data);//访问根节点
	MidTraversal(tree->right);//访问右子树
}

9.3后序遍历的实现

//后序遍历//递归实现
void PosTraversal(TN* tree)
{
	if (tree == NULL)//临界条件--叶子节点
	{
		printf("NULL ");
		return;
	}
	PosTraversal(tree->left);//访问左子树
	PosTraversal(tree->right);//访问右子树
	printf("%d ", tree->data);//访问根节点
}

9.4前中后序遍历有关的选择题

1. 某完全二叉树按层次输出(同一层从左到右)的序列为 ABCDEFGH 。该完全二叉树的前序序列为( A)
A ABDHECFG
B ABCDEFGH
C HDBEAFCG
D HDEBFGCA
解析:画图易得;
2. 二叉树的先序遍历和中序遍历如下:先序遍历: EFHIGJK; 中序遍历: HFIEJKG. 则二叉树根结点为 (A)
A E
B F
C G
D H  
解析:先序(前序)的一个访问的就是根节点。
3. 设一课二叉树的中序遍历序列: badce ,后序遍历序列: bdeca ,则二叉树前序遍历序列为 (D)
A adbce
B decab
C debac
D abcde

 解析:前序和后序可以确定根节点(包括子树的根节点),中序可以根据前面分开的根节点确定左子树和右子树。

9.5层序遍历(广度优先遍历)的实现

实现原理:使用队列,先进先出;

核心思想:上一层带下一层;

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int DataType;
typedef struct TreeNode* QDataType;
//树节点
typedef struct TreeNode
{
	DataType data;//数据域
	struct TreeNode* left;//左子树
	struct TreeNode* right;//右子树
}TN;

//构建树
void CreatTree(TN* tree, TN* lefttree, TN* righttree, DataType x)
{
	tree->data = x;
	tree->left = lefttree;//连接左树
	tree->right = righttree;//连接右树
}

//队列节点
typedef struct QueueNode
{
	//指向下一个
	struct QueueNode* next;
	//数据域
	QDataType data;//这里数据是树的结构体指针
}QN;

//队列
typedef struct Queue
{
	//记录头节点
	QN* head;
	//记录尾节点
	QN* tail;
}Queue;

//初始化队列
void QueueInit(Queue* q)
{
	assert(q);
	q->head = q->tail = NULL;
}

//入队列--尾插
void QueuePush(Queue* q, QDataType tree)
{
	assert(q);
	QN* newnode = (QN*)malloc(sizeof(QN));
	if (newnode == NULL)//开辟失败
	{
		perror("malloc fail");
		exit(-1);
	}
	//队列为空
	if (q->head == NULL)
	{
		q->head = q->tail = newnode;
		newnode->data = tree;
		newnode->next = NULL;
	}
	//队列不为空
	else
	{
		q->tail->next = newnode;
		newnode->data = tree;
		newnode->next = NULL;
		q->tail = newnode;
	}
}

//出队列--头删
void QueuePop(Queue* q)
{
	assert(q);
	//队列为空不能删
	assert(q->head);
	//只有一个节点的情况
	if (q->head->next == NULL)
	{
		free(q->head);
		q->head = q->tail = NULL;
		return;
	}
	//队列多个节点
	QN* temp = q->head->next;
	free(q->head);
	q->head = temp;
}

//判断队列是否为空
bool QueueEmpty(Queue* q)
{
	assert(q);
	//空为真
	return q->head == NULL;
}

//访问队头
QDataType QueueFront(Queue* q)
{
	assert(q);
	//空不能访问
	assert(q->head);

	return q->head->data;
}

//销毁
void QueueDestroy(Queue* q)
{
	assert(q);
	QN* pcur = q->head;
	//循环遍历
	while (pcur)
	{
		QN* temp = pcur->next;
		free(pcur);
		pcur = temp;
	}
	//置空
	q->head = q->tail = NULL;
}

//层序遍历
void LevelTraversal(TN* tree)
{
	Queue q;
	QueueInit(&q);
	if (tree)
	{
		QueuePush(&q, tree);
	}
	while (!QueueEmpty(&q))
	{
		TN* front = QueueFront(&q);
		QueuePop(&q);
		printf("%d ", front->data);

		if (front->left)
		{
			QueuePush(&q, front->left);
		}
		if (front->right)
		{
			QueuePush(&q, front->right);
		}
	}

	printf("\n");

	QueueDestroy(&q);
}

int main()
{
	//搭建一颗树
	TN tree1, tree2, tree3, tree4, tree5, tree6, tree7;
	CreatTree(&tree1, &tree2, &tree3, 1);
	CreatTree(&tree2, &tree4, &tree5, 2);
	CreatTree(&tree3, &tree6, &tree7, 3);
	CreatTree(&tree4, NULL, NULL, 4);
	CreatTree(&tree5, NULL, NULL, 5);
	CreatTree(&tree6, NULL, NULL, 6);
	CreatTree(&tree7, NULL, NULL, 7);
	LevelTraversal(&tree1);//访问

	return 0;
}

 10.有关二叉树的OJ题目

10.1  144. 二叉树的前序遍历 - 力扣(LeetCode)

 

 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
//统计节点个数
int TreeSize(struct TreeNode* root){
    return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
}

//前序遍历
void prevorder(struct TreeNode* root,int* a, int* pi)
{
    if(root == NULL)
        return;
    a[*pi] = (root->val);
    (*pi)++;
    prevorder(root->left,a,pi);
    prevorder(root->right,a,pi);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
   //创建数组
    int size = TreeSize(root);
    int* arr = (int*)malloc(sizeof(int) * size);
    int i = 0;
    prevorder(root,arr,&i);

    *returnSize = size;
    return arr;
}

10.2  94. 二叉树的中序遍历 - 力扣(LeetCode)

10.3  145. 二叉树的后序遍历 - 力扣(LeetCode)

上面两道做法跟10.1一样

10.4  104. 二叉树的最大深度 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root) {
    if(root == NULL)
    {
        return 0;
    }
    int left = maxDepth(root->left);
    int right = maxDepth(root->right);

    return left > right ? left + 1 : right + 1;
}

10.5110. 平衡二叉树 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
//深度
int MaxDepth(struct TreeNode* root)
{
    if(root == NULL)
        return 0;
    int left = MaxDepth(root->left);
    int right = MaxDepth(root->right);

    return left > right ? left + 1 : right + 1;
}

bool isBalanced(struct TreeNode* root) {
    if(root == NULL)
        return true;
    
    int left = MaxDepth(root->left);
    int right = MaxDepth(root->right);
    
    if(abs(left - right) < 2 && isBalanced(root->left) && isBalanced(root->right))//要判断子树本身是否是平衡二叉树
        return true;
    else
        return false;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

键盘上Ins键的作用

前几天编写文档时&#xff0c;发现一个问题&#xff1a;插入内容时&#xff0c;输入的字符将会覆盖光标位置后的字符。原来是按到了键盘上的 Ins键&#xff0c;解决方法是&#xff1a;再按一次 Ins键&#xff08;Ins键如果独立作为一键时&#xff0c;否则使用 “Fn Ins”组合键…

如何搭建Nextcloud云存储网盘并实现无公网ip访问本地文件【内网穿透】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

GitHub Copilot 与 ChatGPT:哪种工具更适合软件开发?

GitHub Copilot 与 ChatGPT&#xff1a;哪种工具更适合软件开发&#xff1f; 比较 ChatGPT 与 GitHub Copilot编程语言功能性定制化训练数据上下文准确性 ChatGPT 与 GitHub Copilot&#xff1a;哪个更适合软件开发&#xff1f;常见问题解答&#xff1a; 不断发展的编程世界正在…

Python:变量和简单类型

2.1 单行注释和多行注释 为程序添加注释可以用来解释程序某些部分的作用和功能&#xff0c;提高程序的可读性。除此之外&#xff0c;注释也是调试程序的重要方式。在某些时候&#xff0c;我们不希望编译、执行程序中的某些代码&#xff0c;这时就可以将这些代码注释掉。 Pyth…

【Web前端实操19】商城官网_分析与顶部广告

本次实操主要是借用小米之前的网站来进行参考&#xff0c;达成网站静态页面开发的目的&#xff0c;而新学者想要一次性直接开发整个网站&#xff0c;肯定会很懵圈&#xff0c;因此&#xff0c;这个商城官网我会一部分一部分地进行拆分来写&#xff0c;最后合成整个界面。 本次…

使用机器学习算法检测交易中的异常行为

交易中的异常检测意味着识别交易或相关活动中的异常或意外模式。这些模式被称为异常或异常值&#xff0c;明显偏离预期规范&#xff0c;可能表明存在不规则或欺诈行为。 异常检测在各种业务中发挥着至关重要的作用&#xff0c;尤其是那些涉及金融交易、在线活动和安全敏感操作…

如何实现无公网ip远程SSH连接家中本地的树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…

【前端】快速掌握CSS-flex布局

文章目录 一、标准流二、浮动1. 基本使用2. 产品区域布局(1) HTML标签(2) CSS样式 3. 清除浮动(1) 场景搭建(2) 额外标签法(3) 单伪元素法(4) 双伪元素法(5) overflow法 三、Flex布局1. Flex组成2. 主轴对齐方式3. 侧轴对齐方式4. 修改主轴方向5. 弹性伸缩比6. 弹性盒子换行7. …

手机壳也能散热了?

作为一个玩了6年的王者荣耀玩家&#xff0c;手机发热真的很影响游戏体验&#xff01;&#xff01;游戏掉帧&#xff0c;性能下降很恼人&#xff0c;试过好几个散热工具&#xff0c;实际效果都不太好&#xff5e; 自从入了Mate 60之后&#xff0c;看着这款微泵液冷壳毫无犹豫第…

day35WEB 攻防-通用漏洞XSS 跨站反射存储DOMBeef-XSS

目录 一&#xff0c;XSS 跨站-原理&分类&手法&探针 1、原理 2、分类 3、危害 二&#xff0c;反射型XSS 1&#xff0c;案例演示 三&#xff0c;存储型XSS 1&#xff0c;案例演示 四&#xff0c;DOM 型XSS 五&#xff0c;XSS 利用环境-XSS 平台&Beef-XS…

如何使用Docker部署火狐浏览器并实现无公网ip远程访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接

文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…

“坦克大战”项目设计文档

「坦克大战」项目的设计文档 功能设计 游戏部分 ​ 在存在 障碍物 的地图上&#xff0c;玩家需要操作一辆绿色的坦克与敌对的灰色坦克作战。 坦克 以及其发射的 炮弹 均会被障碍物所阻挡。玩家用键盘上的 wasd按键 控制坦克移动&#xff0c;用 鼠标 控制炮弹发射方向&#x…

删除倒数第N个结点---链表Oj

https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/?envType=study-plan-v2&envId=top-100-liked 1、常规解法 删除倒数第N个结点,那就是删除整数第(len - N + 1)个结点,我们只需要找到第len-N个结点,让它的next指向倒数第N个结点…

赛氪荣获“2023天津高新技术企业大会支持单位”

1月23日上午&#xff0c;2023天津市高新技术企业大会新闻发布会在天开高教科技园核心区综合服务中心召开&#xff0c;市高企协以及来自高校、企业、社会组织等80余人现场参会。 大会组委会秘书长张博航介绍到&#xff1a;“本次大会将实现自开办以来的多个首次&#xff0c;首次…

【刷题】 leetcode 面试题 08.05.递归乘法

递归乘法 1 题目描述2 思路一&#xff08;返璞归真版&#xff09;3 思路二&#xff08;二进制乘法器版&#xff09;4 思路三&#xff08;变态版&#xff09;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见&#xff01;&#xff01;&#xff01; 1 题目…

CTF CRYPTO 密码学-7

题目名称&#xff1a;敲击 题目描述&#xff1a; 让我们回到最开始的地方 0110011001101100011000010110011101111011011000110110010100110011011001010011010100110000001100100110001100101101001101000011100001100011001110010010110100110100011001000011010100110000…

2024年第04周农产品价格报告

一、摘要 农产品价格监测主要涉及对畜禽类产品、水产品、蔬菜类产品、水果类产品的价格&#xff0c;以周为单位&#xff0c;进行变化情况的数据监测。其中&#xff0c;蔬菜类产品共18种&#xff0c;分别为大白菜、西红柿、黄瓜、青椒、芹菜、土豆、白萝卜、茄子、豆角、胡萝卜…

论文精读--BERT

不像视觉领域&#xff0c;在Bert出现之前的nlp领域还没有一个深的网络&#xff0c;使得能在大数据集上训练一个深的神经网络&#xff0c;并应用到很多nlp的任务上 Abstract We introduce a new language representation model called BERT, which stands for Bidirectional En…

IDEA中git的使用和代码对比神器Beyond Compare

和多同学idea配置好了&#xff0c;但是使用却不知道怎么使用。 我这里说说idea中使用的几招常用操作。如&#xff1a;提交&#xff0c;拉取&#xff0c;推送&#xff0c;合并&#xff0c;取消合并&#xff0c;撤回本地提交。 以及一些刚接触idea使用git的怕把公司代码搞砸了的同…