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

树·c++

树(Tree) 是一种非线性的数据结构,它由若干个 节点(Node) 组成,并通过 边(Edge) 相互连接。树的结构类似于现实中的树,其中 根节点(Root Node) 位于顶部,而其他节点则以分支的方式连接在根节点下面,形成分层结构。

树结构具有以下特点:

  1. 根节点: 树的顶部节点,没有父节点。

  2. 节点: 除了根节点外,每个节点都有且只有一个父节点,并可以有零个或多个子节点。

  3. 子节点: 一个节点的直接下属节点。

  4. 父节点: 一个节点的直接上级节点。

  5. 叶节点: 也叫孩子节点,是指父亲节点的一个下属

  6. 分支: 节点与其子节点之间的连接,用于表示节点之间的关系。

  7. 路径: 从根节点到某个节点的所有连续分支所组成的序列。

  8. 深度(Depth): 节点在树中的层数,根节点为第一层,依次递增。

  9. 高度(Height): 树中节点的最大深度。

在树中还有一种树叫 二叉树 ,是指一个父亲节点最多有2个叶节点 ,二叉树又分为普通二叉树、满二叉树、完全二叉树:

  1. 普通二叉树: 普通二叉树又分为只有左子树、只有右子树和普通二叉树,只有左子树 是指只有左子树,没有右子树, 只有右子树 是指只有右子树,没有左子树

  2. 满二叉树: 满二叉树是指一个二叉树在一定的高度内这个二叉树是满的(指没有空这的结点位置)

  3. 完全二叉树: 完全二叉树是指一个满二叉树中只能有最后一层的还得是右边的结点,不能是左边的结点,这叫满二叉树

树的存储分为链式存储和顺序存储:

  1. 顺序存储: 顺序存储是用数组模拟,适用于满二叉树和完全二叉树,但复杂度较高,如果树的分枝比较稀疏,建议使用链式存储
  2. 链式存储: 链式存储是用和链表差不多的存储方式存储的,链式存储适用于稀疏图,是每个结点都会记住自己的左孩子和右孩子的名字,链式存储定义框架如下:
const int N=1e4+10;	//这里根据题目要求修改
struct node
{int lchild,rchild;	//这里是左孩子和右孩子
}a[N];

树的遍历分为bfs和dfs:

  1. dfs: 深度优先搜索,有三种, 先序遍历、中序遍历、后序遍历 ,先序遍历是先遍历根,在遍历左子树和右子树,中序遍历是先遍历左子树,在遍历根和右子树,后序遍历是先遍历左子树,在遍历右子树和根

  2. bfs: 广度优先搜索,也叫 层序遍历 ,是一层一层的遍历

http://www.lryc.cn/news/119479.html

相关文章:

  • vuejs 设计与实现 - 双端diff算法
  • RISC-V在快速发展的处理器生态系统中找到立足点
  • 面试题02
  • 第六章 SpringBoot注解 @ConditionalOnBean
  • MySQL8的下载与安装-MySQL8知识详解
  • ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)
  • docker实现Nginx
  • 【Java 回忆录】Java全栈开发笔记文档
  • 数据结构:力扣刷题
  • 【Java】常用设计模式的理解
  • python - 爬虫简介
  • 【结构型设计模式】C#设计模式之外观模式
  • Linux网络编程 socket编程篇(一) socket编程基础
  • 【二】SPI IP核的使用
  • 面试热题(二叉树的锯齿形层次遍历)
  • JVM—内存管理(运行时数据区)、垃圾回收
  • 一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务
  • 19. python从入门到精通——Web编程
  • PostMan 教程
  • Http常见状态码
  • C语言之位运算
  • c语言进阶部分详解(数据在内存中的存储)
  • VIOOVI的ECRS工时分析软件分析:SOP的核心和特征是什么?
  • 无涯教程-Perl - lock函数
  • SpringBoot案例-部门管理-前后端联调
  • 每天一道leetcode:139. 单词拆分(动态规划中等)
  • 【C++】友元(含内部类)
  • SQL | 检索数据
  • typeScript 之 运算符
  • BGP实验