树的学习day01

news2024/9/28 15:29:43

树的理解

在这里插入图片描述

树是一种递归形式的调用
树是由于多个结点组成的有限集合T
树中有且仅有一个结点称为
当结点大于1的时候,往往其余的结点为m个互不相交的有限个集合T1,…,Tm,每个互不相交的有限集合本身右是一棵树,称为这个根的子树
空树也是

关于术语

:根结点(没有前驱)
叶子:终端结点(没有后继)
森林:指的是m棵互不相交的树组成的集合(例如:删除R以后形成的A,B,C子树所形成的集合)
有序树:各结点子树从左向右有序,不能交换
无序树:各个结点之间可以互换位置
双亲:上层的那个结点(直接前驱parrrent)
孩子:下层结点的子树(直接后继child)
兄弟:同一个双亲下的同层结点(孩子直接互称兄弟)
堂兄弟:双亲位于同一层的简单(但是并非属于同一个双亲)
祖先:从根到该结点所经历的分支的所有结点
子孙:从该结点的下层子树中的任意结点
结点:树的数据元素
结点的度:结点挂接的子树数目(有几个后继就是几度,亦称为“次数”)----------->结点挂接的孩子有几个,度就是几

树的度:指的是所有结点,其中结点的孩子最多的(结点挂接子树最多的,就是树的度)(Max{各个结点的度})

结点的层次:从根到该结点的层数,根结点算作第一层
终端结点:及最后一层结点,度为0的结点,及叶子结点
分支结点:除了树根以外的结点(内部结点)
树的深度(树的高度):指的是所有结点中的最大的层数(Max{各结点的层次})(那这个不就相当于叶子结点到根结点的距离)

树的广义表示法

对于上图的树的广义表示法为:R(A(D,E),B,C(F(G,H,I)))
用途:
遵照左为尊,兄长如父的原则
在这里插入图片描述

树的逻辑结构

一对多的关系(1:n),有多个直接后继,但是根结点只有一个,并且子树间互不相交。

树的存储结构

树是非线性结构,往往有顺序存储和链式存储等方式
如果将树的信息存储到数据库(首先将每一个结点的信息存入数据库)
往往将树存储到数据库中,首先定义一个结点表(存放每个结点)然后还需要定义一个结点关系表,用来存放结点之间的关系对于节点表以及结点关系表的定义如下:
在这里插入图片描述

二叉树

定义:二叉树是n个结点的有限集合,由一个根节点以及两颗互不相交的分别称为左子树和右子树的二叉树构成
逻辑的结构为:1:2
二叉树的基本特征:每个结点最多只有两棵子树(也就是说明了不存在度大于2的结点
左子树和右子树的顺序不能颠倒(二叉树是一个有序树

二叉树的性质

1)二叉树第二层的结点数最多
答:第二层结点最多为2i-1个结点第i层上至少有1个结点
2)深度为k的二叉树,至多有几个结点?
答:至多有2k-1个结点深度为k的二叉树至少有k个结点
3)对于任何一棵二叉树,若度为2的结点有N2个,则其叶子数必定为?
答:叶子数为N2+1个

满二叉树

一棵树的深度为K,并且有且仅有2k-1个结点的二叉树(特点:每层都充满了结点)

完全二叉树

深度为k的,有n个结点的二叉树,当且仅当其每一个结点斗鱼深度为k的满二叉树一一对应的结点。
第K-1层和满二叉树一样,在最后一层叶子结点尽量靠左
在这里插入图片描述
4)具有N个结点的完全二叉树它的深度为?
答:因为深度为K的完全二叉树它的结点数至多为2k-1,那么K等于⌊log2N⌋+1。其中**⌊⌋ **表示向下取整。
5):对于完全二叉树,若从上至下,从左至右编号,则编号为i的结点,其左孩子的编号必定为2i,其右孩子的编号必定为2i+1,其双亲的编号必为i/2(这里对应取整)

二叉树的存储结构

顺序存储:按照二叉树的结点“自上而下,自左至右”编号,用一组连续的存储单元存储
顺序存储后能否复原成唯一对应的二叉树的形状?
答:若是完全二叉树或者满二叉树则可以做到唯一复原。
而且复原是有规律的——下标为i的双亲,其左孩子的下标必定为2i,其右孩子的下标必定为2i+1

二叉树的链式存储

二叉链表示法

在这里插入图片描述
二叉链表示树:**往往树中的每个结点由三部分组成:数据域和左右指针域(如上图)**其左右指针域分别表示指向结点的左右孩子。
结点的数据类型定义如下:

#include<stdio.h>
#include<stdlib.h>
#pragma region 定义链表
typedef int DataType;
typedef struct Node
{
	DataType data;//数据域
	struct Node* next;//指针域Node表示这个链表的名字
}Node;
#pragma endregion
#pragma region 二叉链表示法
typedef struct BiTNode
{
	DataType data;
	struct BiTNode *lchild, *rchild;//左右孩子的结点指针
}BiTNode;
typedef  BiTNode *BitTree;//用定义好的BitNode结点,再次定义*BitTree指针
/*数据域data存放结点的数据信息
lchild与rchild分别存储指向左孩子与右孩子的指针
当孩子结点不存在的时候,相应的指针指向NULL
*/
#pragma endregion

在这里插入图片描述

三叉链表示法

使用二叉链表示法虽然可以通过两个指针域便捷的找到孩子结点,但是无法直接便捷的寻找到当前结点的父结点。为了能够顺利的找到结点的父亲结点,可以以二叉链表的结点为基础,在结点中添加一个指向父结点的指针parent,形成一个带父亲结点指针的结点。这种节点构建出的二叉树其每个结点包括的成分为:数据域、左孩子指针域、右孩子指针域、父亲域

#pragma region 三叉链表示法
typedef struct BitNode
{
	DataType data;
	struct BitNode* lchild,* rchild;
	struct BitNode* parent;
}BitNode,*BitTree;
#pragma endregion

在这里插入图片描述
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。

void *memset(void *s, int c, size_t n);
s指向要填充的内存块。
c是要被设置的值。
n是要被设置该值的字符数。
返回类型是一个指向存储区s的指针。

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

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

相关文章

【Web前端开发基础】CSS3之空间转换和动画

CSS3之空间转换和动画 目录 CSS3之空间转换和动画一、空间转换1.1 概述1.2 3D转换常用的属性1.3 3D转换&#xff1a;translate3d&#xff08;位移&#xff09;1.4 3D转换&#xff1a;perspective&#xff08;视角&#xff09;1.5 3D转换&#xff1a;rotate3d&#xff08;旋转&a…

城市开发区视频系统建设方案:打造视频基座、加强图像数据治理

一、背景需求 随着城市建设的步伐日益加快&#xff0c;开发区已经成为了我国工业化、城镇化和对外开放的重要载体。自贸区、开发区和产业园的管理工作自然也变得至关重要。在城市经开区的展览展示馆、进出口商品展示交易中心等地&#xff0c;数千路监控摄像头遍布各角落&#…

matlab窗函数-hann窗和hamming窗函数

窗函数的作用 在时域上&#xff0c;窗函数可以看作是对原始信号进行截断或调制的加权函数。这些窗函数通常在时域上是有限的宽度&#xff0c;并且具有对称性&#xff0c;如矩形窗、汉宁窗、汉明窗和布莱克曼窗等。例如&#xff0c;汉明窗是一种对称窗函数&#xff0c;它可以用…

Cuda笔记1

1、培训001 1 1…100&#xff0c;CPU是串行执行&#xff0c;GPU是分成几部分同时计算&#xff0c;如123,456… 2、培训002 一来一回 每种定义有对应的调用位置&#xff0c;和执行位置&#xff0c;不对会报错。 下图是用NVPROF时间分析 下图是资源分析 1&#xff09; CUDA…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践&#xff1a;二分类模型&#xff08;iris数据集&#xff09;数…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

2024群硕荣誉首响,第十三届公益节斩获企业大奖

2024年1月23日至24日&#xff0c;第十三届公益节在北京顺利举行。 历经多年的探索和实践&#xff0c;公益节已经成为中国公益慈善领域颇具影响力的年度盛事。本届公益节全面恢复线下活动&#xff0c;各大企业齐聚现场&#xff0c;展现社会责任的力量&#xff0c;现场气氛热烈而…

什么是5G RedCap?5G RedCap有什么优势?

5G RedCap&#xff08;Reduced Capability&#xff09;是指5G轻量化技术&#xff0c;即通过对5G技术进行一定程度的“功能裁剪”&#xff0c;来降低终端和模组的复杂度、成本、尺寸和功耗等指标&#xff0c;从而“量体裁衣”适配不同的物联需求&#xff0c;实现兼顾物联网系统的…

【送书活动八期】docker容器中登陆并操作postgresql

这里的背景比较简单&#xff0c;因为区块链浏览器使用的是blockscout&#xff0c;blockscout的数据库选择的是postgresql&#xff0c;这些服务组件都是使用的docker容器来管理&#xff0c;今天进行区块链上交易查询的时候&#xff0c;发现数据存在部分问题&#xff0c;因此需要…

大数据信用查询系统能查到什么呢?

在金融助贷行业&#xff0c;大数据有叫大数据信用或者网贷大数据&#xff0c;在申贷的时候&#xff0c;想必大多数人都有听说过&#xff0c;很多人因为大数据不良的原因申贷被拒过&#xff0c;那大数据信用查询系统能查到什么呢?本文就简单为大家总结几点大数据信用查询的内容…

freeRTOS总结(十)消息 队列

1&#xff0c;队列简介&#xff08;了解&#xff09; 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制&#xff08;消息传递&#xff09; 与全局变量的区别 类似全局变量&#xff1f;假设有一个全局变量a 0&#xff0c;现有两个任务都在写这个变量a 假如 当任务…

三层架构-pc通外网小实验

要求:pc端能上外网(isp) 效果图:pc1(VLAN2)和pc3(vlan3)都能ping通2.2.2.2(R2环回) 代码:#先配置好r1,r2,端口ip # [R1] ip route-static 0.0.0.0 0.0.0.0 10.1.1.2 acl 2000 rule permit source any interface GigabitEthernet0/0/2 nat outbound 2000 …

Android消息推送 SSE(Server-Sent Events)方案实践

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/135777170 本文出自 容华谢后的博客 0.写在前面 最近公司项目用到了消息推送功能&#xff0c;在技术选型的时候想要找一个轻量级的方案&#xff0c;偶然看到一篇文章讲ChatGPT的对话机制是基…

Bank_Code_FullName_2020.06.16.xlsx

Bank_Code_FullName_2020.06.16.xlsx 银行联行号和全称 https://download.csdn.net/download/spencer_tseng/88780566 144692条记录&#xff0c;没法子贴上去

抖音VR直播:沉浸式体验一键打通360度精彩

随着5G技术的发展&#xff0c;VR直播近年来也逐步进入到大众的视野中&#xff0c;相比于传统直播&#xff0c;VR直播能够提供更加丰富的内容和多样化的互动方式&#xff0c;让观众更有沉浸感和参与感。现如今&#xff0c;抖音平台也上线了VR直播&#xff0c;凭借沉浸式体验和有…

基于 pytorch-openpose 实现 “多目标” 人体姿态估计

前言 还记得上次通过 MediaPipe 估计人体姿态关键点驱动 3D 角色模型&#xff0c;虽然节省了动作 K 帧时间&#xff0c;但是网上还有一种似乎更方便的方法。MagicAnimate 就是其一&#xff0c;说是只要提供一张人物图片和一段动作视频 (舞蹈武术等)&#xff0c;就可以完成图片…

【Kubernetes】深入了解Kubernetes(K8s):现代容器编排的引领者

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xf…

JVM-初始JVM

什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; JVM的功能 1 - 解释和运行 2 - 内存管理 3 - 即时编译 解释和运行 解释…

LeetCode.2865. 美丽塔 I

题目 题目链接 分析 闲谈&#xff1a;每次读 LeetCode 的题目描述都要费老大劲&#xff0c;o(╥﹏╥)o 题意&#xff1a;这个其实意思就是以数组的每一位作为最高点&#xff0c;这个点&#xff08;数字&#xff09;左右两边的数字都不能大于这个数字(可以等于)&#xff0c;…

Qt基础-屏蔽qDebug()、qWarning()调试和警告消息

本文讲解Qt如何-屏蔽qDebug()、qWarning()调试和警告消息 在工程文件.pro里面添加 DEFINES QT_NO_WARNING_OUTPUT\ QT_NO_DEBUG_OUTPUT 如果只想Release版本的时候不打印&#xff1a; Release:DEFINES QT_NO_WARNING_OUTPUT\ QT_NO_DEBUG_OUTPUT 这样只是在Release版本…