数据结构--树4.1

news2024/12/26 11:54:45

目录

一、树的定义

 二、结点的分类

三、结点间的关系

四、结点的层次

 五、树的存储结构


 

一、树的定义

        树(Tree)是n(n>=0)个结点的有限集。当n=0时称为空树,在任意一个非空树中:

——有且仅有一个特定的称为根(Root)的结点;

——当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……,其中每一个集合

        本身又是一棵树,并且称为根的子树(SubTree)。

——n>0时,根结点是唯一的,坚决不可能存在多个结点。

——n>0时,子树的个数是没有限制的,但它们互相是一定不会相交的。

 二、结点的分类

        上图所示的每一个圈圈我们就称为树的一个结点。结点拥有的子树数称为结点的度(Degree),树的度取树内各结点的度的最大值。

——度为0的结点称为叶结点(Leaf)或终端结点;

——度不为0的结点称为分支结点或非终端结点,除根结点外,分支结点也称为内部结点。

三、结点间的关系

1、结点的子树的跟称为结点的孩子(Child),相应的,该结点称为孩子的双亲(Parent),同一双亲的孩子之间互称为兄弟(Sibling)。

2、结点的祖先是从根到该结点所经分支上的所有结点。

四、结点的层次

1、结点的层次(Level)从根开始定一起,根为第一层,根的孩子为第二层。

2、其双亲在同一层的结点互为堂兄弟。

3、树中结点的最大层次称为树的深度(Depth)或高度。   

 五、树的存储结构

#include <stdio.h>

#define MAX_TREE_SIZE 100

typedef char ElemType;
//孩子结点 
typedef strcut Ctnode
{
	int child;//孩子结点的下标 
	struct Ctnode *next;//指向下一个孩子结点的指针 
 } * ChildPtr;
//表头结点 
typedef struct
{
	ElemType data;//存放在树种的结点的数据 
	int parent;//存放双亲的下标 
	ChildPtr firstchild;//指向第一个孩子的指针 
}Ctbox;
//树结构 
typedef struct
{
	Ctbox nodes[MAX_TREE_SIZE];//结点数据 
 } 

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

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

相关文章

Cesium常用功能封装,js编码,每个功能独立封装——第1篇

Cesium常用功能封装&#xff0c;js编码&#xff0c;每个功能独立封装&#xff0c;方便直接应用到项目中。 本脚手架项目是前后端一整套&#xff0c;包括权限管理。前端框架采用Vue3 js ElementUI-Plus&#xff0c;后端采用Spring Boot Mysql Redis&#xff0c;GIS引擎本项目…

深度学习技术

深度学习是什么&#xff1f; 深度学习&#xff0c;英文名为Deep Learning&#xff0c;其实就是机器学习的一种高级形式。它的灵感来源于人脑神经网络的工作方式&#xff0c;是一种让机器可以自主地从数据中学习和提取特征的技术。你可以把它想象成一位小侦探&#xff0c;通过不…

springboot+vue健身器材用品网上商城系统的设计与实现_97794

随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决各种问题&#xff0c;必录德健身器材用品网展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为解决…

Leetcode 191.位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中…

4、Spring之Bean生命周期源码解析(创建)

Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。 Bean的生命周期就是指:在Spring中,一个Bean是如何生成的,如何销毁的。 Bean生命周期流程图…

帆软报表系统获取管理员权限

子曰&#xff1a;“君子食无求饱&#xff0c;居无求安&#xff0c;敏于事而慎于言&#xff0c;就有道而正焉&#xff1a;可谓好学也已。” 漏洞实战 构造payload&#xff0c;访问漏洞url后台地址&#xff1a; /ReportServer?opfr_auth&cmdah_loginui&_161983254558…

一个短视频去水印小程序,附源码

闲来无事&#xff0c;开发了一个短视频去水印小程序&#xff0c;目前支持抖音、快手&#xff0c;后续再加上别的平台。 因为平台原因&#xff0c;就不放二维码了&#xff0c;你可以直接微信搜索【万能老助手】这里贴一张效果图。 页面非常简单&#xff0c;这里就不过多介绍了&…

node.js安装好后测试报错解决

node.js的版本是18.X.X node.js安装好后&#xff0c;执行命令&#xff1a; npm install express -g 报错&#xff01;&#xff01;&#xff01; 解决办法&#xff1a; 看报错是由于权限不够&#xff0c; 所以打开cmd时&#xff0c;以管理员的方式打开 然后再执行命令就OK了…

LLMs:LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略

LLMs&#xff1a;LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略 目录 LangChain-Chatchat的简介 1、原理图解 2、文档处理实现流程 1、模型支持 (1)、LLM 模型支持 (2)、Embedding 模型支持 LangChain-Chatchat的安装 1、镜像部署…

nacos总结1

5.Nacos注册中心 国内公司一般都推崇阿里巴巴的技术&#xff0c;比如注册中心&#xff0c;SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 5.1.认识和安装Nacos Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c…

记一种不错的缓存设计思路

之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路&#xff0c;觉得不错&#xff0c;做个记录供以后参考。 场景 假设有个以下格式的接口&#xff1a; GET /api?keys{key1,key2,key3,...}&types{1,2,3,...} 其中 keys 是业务主键列表&#xff0c;types 是想要取到的…

原生微信小程序 动态(横向,纵向)公告(广告)栏

先看一下动态效果 Y轴滚动公告的原理是swiper组件在页面中的Y轴滚动&#xff0c;属性vertical&#xff0c;其余属性也设置一下autoplay circular interval"3000" X轴滚动的原理是&#xff0c;利用动画效果&#xff0c;将内容从右往左过渡过去 wxml&#xff1a; &l…

80%的攻击仅使用三个恶意软件加载程序

根据 IT 安全公司 ReliaQuest 的威胁研究人员的说法&#xff0c;QakBot、SocGholish 和 Raspberry Robin 这三种恶意软件加载程序在 80% 的事件中造成了严重破坏。 恶意软件加载程序用作传递和执行其他形式恶意软件的工具&#xff0c;例如勒索软件、病毒、木马或蠕虫。它们是攻…

Android SDK 上手指南||第八章 应用程序资源

第八章 应用程序资源 在系列教程中的最新一篇里&#xff0c;我们将研究大家最可能在第一个开发项目中涉及到的资源类型。项目资源当中包含布局、图片以及数据值&#xff0c;这些都是应用需要使用的元素。当我们创建一个新项目时&#xff0c;项目目录下会自动生成多个用于容纳通…

[管理与领导-53]:IT基层管理者 - 8项核心技能 - 8 - 持续改进

前言&#xff1a; 管理者存在的价值就是制定目标&#xff0c;即目标管理、通过团队&#xff08;他人&#xff09;拿到结果。 要想通过他人拿到结果&#xff1a; &#xff08;1&#xff09;目标&#xff1a;制定符合SMART原则的符合业务需求的目标&#xff0c;团队跳一跳就可以…

飞腾uboot命令简单介绍

飞腾uboot和开源uboot并无大差异,故飞腾uboot固件命令可以直接从网上搜索开源uboot相关命令。 这里为了便于大家调试,将一些可能用到的命令说明一下。 在 Uboot 命令行下,输入 help 将打印所有的可用命令,复杂命令操作,通过命令 help 的方式获取具体说明。 1.help命令 …

GDB用法(一)

预备 测试代码 main.cpp #include <iostream> #include <vector> #include "student.h"using namespace std;int add(int a, int b) {return a b; }int main() {vector<int> v {1, 3};Student* s1 new Student("zz", 20);Student* …

如何评估一个需求开发通常需要多长时间?

业务人员和产品管理者有时候会想要知道在他们即将进行的项目中&#xff0c;“处理需求”的环节会花费多长时间。但这个问题并没有固定的答案&#xff0c;因为这会取决于很多因素。 有许多已经公开的行业平均数据可以提供参考&#xff0c;它可以提示我们在一个典型项目中应该花…

本质矩阵E推R和T

https://zhuanlan.zhihu.com/p/500798616 https://zhuanlan.zhihu.com/p/435306687

在vue项目中引入vuex使用(引入到vue项目中)

项目下新建store文件 // npm下载后 导入 import Vue from vue import Vuex from vuex// 注册在vue实例上 Vue.use(Vuex)// 定义结构 export default new Vuex.Store({state: {},getters: {},mutations: {},actions: {},modules: {} })//main.js import store from ./storenew …