【树——数据结构】

文章目录

      • 1.基本概念
      • 2.基本术语
          • 1.结点之间的关系描述
          • 2.结点,树的属性描述
          • 3.有序树,无序树
          • 4.森林
      • 3.树的性质
          • 考点1
          • 考点2
          • 考点3
          • 考点4
      • 4.树的存储结构
      • 5.树和森林的遍历

1.基本概念

结点,根节点,分支结点,叶子结点,边,子树
空树:节点数为0的树

非空树的特性

  1. 有且仅有一个根节点
  2. 没有后继的结点称为叶子结点
  3. 有后继的结点称为分支结点
  4. 除了根节点外,任何一个结点都有且仅有一一个前驱

树是一种递归定义的数据结构

2.基本术语

1.结点之间的关系描述
  1. 祖先结点/子孙结点
  2. 双亲结点(父节点) /孩子结点
  3. 兄弟结点/堂兄弟结点
  4. 两个节点之间的路径:只能从上往下
  5. 路径长度:路径上经过几条边
  6. 树的路径长度:从树根到每个结点的路径长度的总和
2.结点,树的属性描述
  1. 结点的层次(深度) :从上往下数
  2. 结点的高度:从下往上数
  3. 树的高度(深度) :总共多少层
  4. 结点的度:有几个孩子(分支)
    非叶子节点的度>0
    叶子结点的度=0
  5. 树的度: 树中各结点的度的最大值
3.有序树,无序树
  1. 有序树:逻辑上看,树中节点的各子树从左至右是有次序的,不能互换
  2. 无序树:逻辑上看,树中节点的各子树从左至右是无次序的,可以互换
4.森林

森林是m (m20)棵互不相交的树的集合

3.树的性质

考点1

结点数=总度数+1

考点2
  1. 度为m的树
    任意结点的度≤m (最多m个孩子)
    至少有一个结点度=m
    一定是非空树

  2. m叉树
    任意结点的度≤m (最多m个孩子)
    允许所有结点的度都<m
    可以是空树

考点3

在这里插入图片描述

考点4

在这里插入图片描述

4.树的存储结构

双亲表示法

  1. 每个结点中保存指向双亲的"指针”
  2. 根节点存储在0, -1表示没有双亲
  3. 新增数据元素无需按逻辑上的次序存储
  4. 优点:查指定结点的双亲很方便
  5. 缺点:查指定结点的孩子只能从头遍历

孩子表示法

  1. 顺序+链式存储——指针指向第一个孩子
  2. 优点:找孩子方便
  3. 缺点:找父节点不方便

孩子兄弟表示法

  1. 用二叉链表存储树——左孩子右兄弟
  2. 孩子兄弟表示法存储的树,从存储视角来看形态上和=叉树类似
  3. 考点:树与二叉树的相互转换。本质就是用孩子兄弟表示法存储树

重要考点:树、森林与二叉树的转换

  1. 本质:用二叉链表存储森林——左孩子右兄弟
  2. 森林中各个树的根节点之间视为兄弟关系

5.树和森林的遍历

树的遍历
先根遍历——深度优先遍历
先根,后子树
树的先根遍历序列与这棵树相应二叉树的先序序列相同
后根遍历——深度优先遍历
先子树,后根
树的后根遍历序列与这棵树相应二叉树的中序序列相同
层序遍历(用队列实现)——广度优先遍历

森林的遍历
先序遍历

  1. 若森林为非空,则按如下规则进行遍历:
  2. 访问森林中第一棵树的根结点。
  3. 先序遍历第一棵树中根结点的子树森林。
  4. 先序遍历除去第一棵树之后剩余的树构成的森林。
  5. 效果等同于依次对各个树进行根遍历

中序遍历

  1. 若森林为非空,则按如下规则进行遍历:
  2. 中序遍历森林中第一棵树的根结点的子树森林。
  3. 访问第一-棵树的根结点。
  4. 中序遍历除去第一-棵树之 后剩余的树构成的森林。
  5. 效果等同于依次对各个树进行根遍历
森林二叉树
先根遍历先序遍历先序遍历
后根遍历中序遍历中序遍历

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mac】Axure RP 9(交互原型设计软件)安装教程

软件介绍 Axure RP 9是一款强大的原型设计工具&#xff0c;广泛用于用户界面和交互设计。它提供了丰富的功能和工具&#xff0c;能够帮助设计师创建高保真的交互原型&#xff0c;用于展示和测试软件应用或网站的功能和流程。以下是Axure RP 9的主要特点和功能&#xff1a; 交…

(1)探索 SpringAI - 基本概述

人工智能简介 A system is ability to correctly interpret external data, to learn from such data, and to use those learnings to achieve specific goals and tasks through flexible adaptation. 翻译&#xff1a;系统正确解释外部数据的能力&#xff0c;从这些数据中学…

Unity MeshRenderer 入门

概述 在项目制作过程中&#xff0c;肯定缺少不了模型的使用&#xff0c;那就一定接触过MeshRenderer&#xff0c;也许还有你不理解的地方&#xff0c;接下来让我们来学习一下这部分的内容吧。 Mesh Filter&#xff08;网格过滤器&#xff09; Mesh:提供一个网格的参考&#xf…

H.265 与 H.264 的主要区别

H.265 与 H.264 的主要区别 H.265 与 H.264 的主要区别各模块技术差异汇总宏块划分帧内预测模式帧间预测模式去块滤波ALF自适应环路滤波采样点自适应偏移&#xff08;Sample Adaptive Offset&#xff09;滤波并行化设计TileEntropy sliceDependent SliceWPP&#xff08;Wavefro…

WORD排版常见问题与解决方案

前言 近期使用word软件进行论文排版工作&#xff0c;遇到了一些常见的问题&#xff0c;记录一下&#xff0c;避免遗忘。 基本配置 系统环境&#xff1a;win10/win11 word版本&#xff1a;Microsoft Office LTSC 专业增强版 2021 问题与解决方案 问题1&#xff1a;页眉显示内…

Java IO流(一)

1. IO流概述 1.1 什么是IO流 在计算机中&#xff0c;input/output&#xff08;I/O、i/o 或非正式的 io 或 IO&#xff09;是信息处理系统&#xff08;例如计算机&#xff09;与外界&#xff08;可能是人类或其他信息处理系统&#xff09;之间的通信。 输入是系统接收到的信号或…

c#Excel:2.写入Excel表 3.读取Excel表

--写入Excel表-- 该例首先从数据库aq中读取学生信息表staq(参考数据库章节)&#xff0c;然后将学生信息表中的数据写入Excel表格中 &#xff08;1&#xff09;在OfficeOperator项目的ExcelOperator类中定义索引器&#xff0c;用于获取Excel表格中的单元格&#xff0c;代码如下…

理解Linux文件系统

文章目录 一、引言二、Linux文件系统概述1、文件系统的结构2、文件系统目录树的逻辑结构 二、文件系统的特性1、super block&#xff1a;文件系统的超级块2、inode&#xff1a;文件系统的索引节点3、inode table4、block&#xff1a;文件系统的数据块5、块组描述符表&#xff0…

QT:核心控件-QWidget

文章目录 控件enableobjectNamegeometrysetWindowTitleopacitycursorFonttooltipstyleSheet 控件 什么是控件&#xff1f; 如上所示&#xff0c;就是控件&#xff0c;而本篇要做的就是对于这些控件挑选一些比较有用的常用的进行讲解分析 在QT的右侧&#xff0c;会有对应的空间…

第 8 章 机器人平台设计(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 学习到当前阶段大家对ROS已经有一定的认知了&#xff0c;但是之前的内容更偏理论&#xff0c;尤其是介绍完第6…

ccpc热身赛题目1:中文系Roliy的困惑

代码 import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<String> list new ArrayList<>();char [] charArr new char[32];for (int i 0; i < charArr.length; i) {charArr[i] 0…

python 怎么调用R

如何在python中调用R&#xff1f;这其中包括了如何调用R的对象&#xff08;函数和包&#xff09;&#xff0c;R和python的对象如何互相转换&#xff0c;以及如何调用R的脚本&#xff08;外界参数的输入&#xff09;。python提供了一个模块rpy2&#xff0c;可以较好地完成这项工…

RCE学习(一)

一.知识点 RCE&#xff1a;远程命令/代码执行漏洞&#xff0c;简称为RCE漏洞&#xff0c;可以直接向服务器后台远程注入操作系统的命令或者代码&#xff0c;从而拿到服务器后台的权限。RCE分为远程执行命令&#xff08;执行ping命令&#xff09;和远程代码执行eval 简单来说就…

Python-Socket编程实现tcp-udp通信

本文章是记录我准备大创项目时学的socket编程的用法&#xff0c;纯属记录生活&#xff0c;没有教学意义&#xff0c;视频我是看b站up主王铭东学的&#xff0c;讲的很详细&#xff0c;我只粗略学了个大概&#xff0c;我想要通过tcp&#xff0c;udp传输yolo目标检测中的物体坐标信…

java面试(微服务)

SpringCloud五大组件 Nacos&#xff1a;注册中心Ribbon&#xff1a;负载均衡Feign&#xff1a;远程调用sentinel&#xff1a;服务熔断Gateway&#xff1a;网关 注册中心 Eureka Nacos 负载均衡 Ribbon负载均衡流程 Ribbon的负载均衡策略 RoundRobinRule&#xff1a;简单的…

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测 目录 分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测分类效果基本介绍程序设计参考资料分类效果 基本介绍 MATLAB实现LSSVM最小二乘支持向量机多分类预测。最小二乘支持向量机(Least Squares Support Vecto…

网络应用层之(6)L2TP协议详解

网络应用层之(6)L2TP协议 Author: Once Day Date: 2024年5月1日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

python算法题

需求 代码 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if max(nums) >target:for i in range(len(nums)-1):if nums[i1] > target and nums[i] <target:return i1if max(nums) <target:return len(nums)if min(nums) > …

kubectl_入门_Pod控制器

Pod控制器 在k8s中&#xff0c;按照pod的创建方式可以将其分为两类 自主式pod&#xff1a;k8s直接创建出来的pod&#xff0c;这种pod删除后就没有了&#xff0c;也不会重建控制器创建的pod&#xff1a;通过控制器创建的pod&#xff0c;这种pod删除了之后还会自动重建 1. 什么…

【docker 】 push 镜像提示:denied: requested access to the resource is denied

往 Docker Registry &#xff08;私服&#xff09;push 镜像提示&#xff1a;denied: requested access to the resource is denied 镜像push 语法&#xff1a;docker push <registry-host>:<registry-port>/<repository>:<tag> docker push 192.16…