【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度

文章目录

  • 5.1 树的基本概念
    • 5.1.1 树的定义
      • 有序树、无序树
    • 5.1.2 森林的定义
    • 5.1.3 树的术语
      • 1. 父亲(parent)、儿子(child)、兄弟(sibling)、后裔(descendant)、祖先(ancestor)
      • 2. 度(degree)、叶子节点(leaf node)、分支节点(internal node)
      • 3. 结点的层数
      • 4. 路径、路径长度、结点的深度、树的深度
    • 5.1.4 树的表示
      • 1.树形表示法
      • 2.嵌套集合表示法
      • 3.嵌套括号表示法
      • 4.凹入表示法

5.1 树的基本概念

5.1.1 树的定义

  • 一棵树是结点的有限集合T:
    • 若T非空,则:
      • 有一个特别标出的结点,称作该树的,记为root(T);
      • 其余结点分成若干个不相交的非空集合T1, T2, …, Tm (m>0),其中T1, T2, …, Tm又都是树,称作root(T)的子树
        • 在这里插入图片描述
    • T 空时为空树,记作root(T)=NULL。

有序树、无序树

  如果子树T1, T2, …, Tm 的相对次序被指明,则称该树为有序树,否则称为无序树
  在有序树中,把Ti (1≤i≤m)称作根的第 i 个子树。因为计算机表示定义了树的一种隐含次序,所以大多数情况下假定所讨论的树都是有序的,除非另有说明。

  • 如果是有序树,那么两者是不同的;如果是无序树,那么两者是相同的。
    在这里插入图片描述

5.1.2 森林的定义

  一个森林是0棵或多棵不相交(非空)树的集合,通常是一个有序的集合。换句话说,森林由多个树组成,这些树之间没有交集,且可以按照一定的次序排列。在森林中,每棵树都是独立的,具有根节点和子树,树与树之间没有直接的连接关系。
  森林是树的扩展概念,它是由多个树组成的集合。在计算机科学中,森林也被广泛应用于数据结构和算法设计中,特别是在图论和网络分析等领域。

5.1.3 树的术语

1. 父亲(parent)、儿子(child)、兄弟(sibling)、后裔(descendant)、祖先(ancestor)

在这里插入图片描述

  • 这些术语用于描述节点之间的关系和层次结构

    • 每个节点都是它的子树的根节点的父亲
    • 反过来,每个节点都是它父亲的儿子
    • 具有相同父亲的节点称为兄弟
    • 每个节点都是它子树中所有节点的祖先
    • 反过来,每个节点都是它祖先的后裔
  • 节点之间的父子关系和兄弟关系可以帮助我们理解树的结构和遍历算法

  • 祖先和后裔的概念则用于描述节点之间的历史关系和衍生关系。

2. 度(degree)、叶子节点(leaf node)、分支节点(internal node)

在这里插入图片描述

  • 一个节点的儿子的个数称为该节点的次数
  • 如果一个节点的度为0,则它被称为终端节点叶子节点(在严格意义上,非根的终端节点称为叶子节点)。
  • 非终端节点称为分支节点

  在图5.1中,节点B有一个子树,其度为1;节点A有三个子树,其度为3;因此,这棵树的度为3,可以称为3元树(3-ary tree)。叶子节点是度为0的节点,例如在图5.1中,节点F、G、H和I是叶子节点,而节点A、B、C、D和E是分支节点。

3. 结点的层数

  • 结点的层数是根据递归定义来确定的:
    • 根节点的层数为0。
    • 其余节点的层数是其父节点的层数加1。
  • 根节点位于第0层,它的子节点位于第1层,子节点的子节点位于第2层,依此类推。
    在这里插入图片描述

4. 路径、路径长度、结点的深度、树的深度

  • 路径是指结点序列v1, v2, …, vk,其中每个节点vi是节点vi+1的父节点(1 ≤ i < k)。
  • 路径长度是指路径经过的边数,即k-1。
  • 结点vi的深度是指从根节点到结点vi的路径长度 D e p t h ( i ) Depth(i) Depth(i)
  • 一棵树的深度是指树中所有节点深度的最大值: m a x i = 1 , … , n D e p t h ( i ) max_{i=1,…, n}Depth(i) maxi=1,,nDepth(i)

在这里插入图片描述
  图5.1的树中,结点序列A, B, E是结点A到结点E的路径,路经长度为2,结点E的深度为2,树的深度为3。

5.1.4 树的表示

  • 可参照:【数据结构】树与二叉树(二):树的表示C语言:树形表示法、嵌套集合表示法、嵌套括号表示法 、凹入表示法
  • 关于树(二叉树)的基础操作有待进一步更新~

1.树形表示法

  树形表示法是一种图形化的表示方法,使用节点和边来表示树的结构。每个节点代表树中的一个元素,而边表示节点之间的关系。这种表示方法可以直观地展示树的层次结构和节点之间的连接关系。
  python创建树:

class TreeNode:
    def __init__(self, value):
        self.value = value
        self.children = []

# 创建一个树
root = TreeNode('A')
node1 = TreeNode('B')
node2 = TreeNode('C')
node3 = TreeNode('D')

root.children.append(node1)
root.children.append(node2)
node2.children.append(node3)

2.嵌套集合表示法

tree = {
    'value': 'A',
    'children': [
        {
            'value': 'B',
            'children': []
        },
        {
            'value': 'C',
            'children': [
                {
                    'value': 'D',
                    'children': []
                }
            ]
        }
    ]
}

3.嵌套括号表示法

tree_str = '((A (B C)) D)'

4.凹入表示法

def print_tree(node, level=0):
    if node is None:
        return
    print('  ' * level + str(node.value))
    for child in node.children:
        print_tree(child, level + 1)

print_tree(root)

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

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

相关文章

虚幻5.3打包Windows失败

缺失UnrealGame二进制文件。 必须使用集成开发环境编译该UE项目。或者借助虚幻编译工具使用命令行命令进行编译 解决办法&#xff1a; 1.依次点击平台-项目启动程序 2.点击后面的按钮进行设置 3.稍等后&#xff0c;打包后的程序即可运行&#xff0c;之后就可以愉快的打包了

win 命令替代鼠标的操作

操作方式都是在 winR 输入框输入或者终端输入 1、快速打开 控制面板 运行control 2、快速打开 电源选项 运行powercfg.cpl 3、快速打开 网络连接 运行ncpa.cpl 4、快速打开 程序和功能 运行appwiz.cpl 5、快速打开 Windows Defender防火墙 运行Firewall.cpl 6、快速打开 鼠标 …

麒麟系统rsync备份数据

第一步设置两台机器之间免密登录 在主机A 使用root用户生成配对密钥 ssh-keygen -t rsa 遇到提示回车默认即可&#xff0c;公钥被存放在用户目录下.ssh 如root用户下 即/root/.ssh/id_rsa.pub就是公钥 将主机A中 /root/.ssh/id_rsa.pub复制到主机B中.ssh 目录并改名auth…

qt+opengl 三维坐标系(三)

文章目录 前言一、深度测和投影矩阵、观察矩阵二、绘制坐标系三、添加箭头四、添加文字五、放大缩小六、旋转七、移动八、完整代码总结 前言 效果如图 一、深度测和投影矩阵、观察矩阵 这部分不明白&#xff0c;网上查的都是这个步骤&#xff0c;用起来也没问题。 void MOp…

3.29每日一题(微分方程的几何应用题:重点考察)

1、画图&#xff0c;把题目中的条件标出来 2、通过题目中的条件设出正确的微分方程&#xff08;解题的关键&#xff09; 注&#xff1a;用点斜式设方程的时候&#xff0c;注意Y - y y&#xff08;X - x&#xff09;中&#xff08;x&#xff0c;y&#xff09;为曲边上的动点&a…

jenkins Java heap space

jenkins Java heap space&#xff0c;是内存不够。 两个解决方案&#xff1a; 一&#xff0c;修改配置文件 windows系统中&#xff0c;找到Jenkins的安装路径&#xff0c; 修改jenkins.xml 将 -Xmx256m 改为 -Xmx1024m 或者更大 重启jenkins服务。 二&#xff0c;jenkins增…

ubuntu 20.04 server安装

ubuntu 20.04 server安装 ubuntu-20.04.6-live-server-amd64.iso 安装 安装ubuntu20.04 TLS系统后&#xff0c;开机卡在“A start job is running for wait for network to be Configured”等待连接两分多钟。 cd /etc/systemd/system/network-online.target.wants/在[Servi…

基于springboot实现智慧外贸平台系统【项目源码+论文说明】

基于springboot实现智慧外贸平台管理系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展&#xff0c;丰富智慧外贸管理经…

基于OCC+OSG集成框架下的GMSH之二阶网格划分探索

二阶网格相对于一阶网格&#xff0c;其计算节点数量更多&#xff0c;具体表现在一个一阶网格下的三角形中的每个边的中点构建一个点&#xff0c;对一阶三角形网格划分成四个三角形。gmsh提供了网格阶数设置&#xff0c;一般默认是一阶网格&#xff0c;本人根据gmsh文档&#xf…

dgl安装教程

我在矩池云服务器上安装了一个dgl的环境&#xff0c;以后都可以用这个了 首先我的基础环境是 最终的版本如下 安装步骤如下 pip install dgl0.9.1 -f https://s3.us-west-2.amazonaws.com/dgl-data/wheels/cu113/repo.html注意不能直接使用 pip install dgl -f https://s…

001. 变量、环境变量

1、在终端中显示输出 shell脚本通常以shebang起始&#xff1a;#&#xff01;/bin/bash/ shebang是一个文本行&#xff0c;其中#!位于解释器路径之前。/bin/bash是Bash的解释器命令路径。bash将以#符号开头的行视为注释。脚本中只有第一行可以使用shebang来定义解释该脚本所使…

持续交付-Jenkinsfile 语法

实现 Pipeline 功能的脚本语言叫做 Jenkinsfile&#xff0c;由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录&#xff0c;随项目一起受源代码管理软件控制&#xff0c;无需像创建"自由风格"项目一样&#xff0c;每次可能需要拷贝很多设置到新项目&#xff0c;…

SpringBoot中的Environment

暂且理解成整个application.properties 通过Environment 可以访问application.properties中的任何配置 这里用yml配置 具体实用

docker部署tomcat

1.下载tomcat镜像 尽量去下载最新版本 直接输入docker pull tomcat 后面不跟版本号(要是跟版本号&#xff0c;你还要去官网去查看是否有此版本&#xff0c;太麻烦了) 2.查看镜像 3.通过镜像去run启动容器 -d 就是后台运行 --name 给容器取个新名字 -p 3355:8080…

淘宝/天猫获取商品历史价格信息 API 返回值说明

获取商品历史价格接口的业务场景主要是用于电商平台的开发。这些接口可以提供商品的历史价格信息&#xff0c;帮助开发者更好地了解商品的情况&#xff0c;为消费者提供更准确的价格参考。 在电商平台上&#xff0c;消费者常常需要了解商品的历史价格信息&#xff0c;以判断当…

数字孪生与电力行业的完美融合

电力行业一直是现代社会不可或缺的一部分&#xff0c;而数字孪生技术正逐渐改变这一传统行业的面貌。数字孪生电力解决方案通过将物理世界与数字世界相结合&#xff0c;为电力行业带来了前所未有的机会和挑战。本文为大家介绍山海鲸电力行业系列解决方案&#xff0c;带大家了解…

龙迅LT8911EXB功能概述 MIPICSI/DSI TO EDP

LT8911EXB 描述&#xff1a; Lontium LT8911EXB是MIPIDSI/CSI到eDP转换器&#xff0c;单端口MIPI接收器有1个时钟通道和4个数据通道&#xff0c;每个数据通道最大运行2.0Gbps&#xff0c;最大输入带宽为8.0Gbps。转换器解码输入MIPI RGB16/18/24/30/36bpp、YUV422 16/20/24bp…

在WSL2中安装多个Ubuntu实例

参考&#xff1a;How to install multiple instances of Ubuntu in WSL2 本文主要内容 第一步&#xff1a;在 WSL2 中安装最新的 Ubuntu第二步&#xff1a;下载适用于 WSL2 的 Ubuntu 压缩包第三步&#xff1a;在 WSL2 中安装第二个 Ubuntu 实例第四步&#xff1a;登录到第二个…

基于STC12C5A60S2系列1T 8051单片机SPI通信应用

基于STC12C5A60S2系列1T 8051单片机SPI通信应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 8051单片机SPI通信介绍STC12C5A60S2系列1T 8051单片…

APISpace IP归属地查询接口案例代码

1.IP归属地查询API 1.1 API接口简介 IP归属地查询API&#xff1a;根据IP地址查询归属地信息&#xff0c;包含国家、省、市、区县和运营商等信息。APISpace 提供了IPv4 和 IPv6 的IP归属地查询接口&#xff0c;并且包含了各种归属地精度查询的接口。 1.2 IPv4 IPv4归属地查询…