news 2026/9/19 14:12:48

树是一种非线性数据结构,用于表示具有层次关系的数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树是一种非线性数据结构,用于表示具有层次关系的数据

树是一种非线性数据结构,用于表示具有层次关系的数据。根据你提供的内容,以下是对相关概念的梳理与解释:

  1. 树的基本概念

    • 内部结点:除了叶子结点以外的所有非终端结点,即至少有一个子结点的结点(如示例中的 B、D)。
    • 结点层次:从根开始定义,根结点位于第 1 层,其子结点为第 2 层,依此类推,每一层比父层 +1。例如 A 在第 1 层,B、C、D 在第 2 层。
    • 树的高度:树中所有结点的最大层次数。若最大层次为 3,则树的高度为 3。
    • 有序树与无序树:如果子树之间的顺序有区别(如左、右不同),则称为有序树;否则为无序树。二叉树是典型的有序树。
  2. 二叉树的定义
    二叉树是一个有限结点集合,满足:

    • 空树(n = 0);
    • 或由一个根结点和两棵互不相交的左子树和右子树组成,且左右子树也均为二叉树(递归定义)。
  3. 二叉树与普通树的核心区别

区别点二叉树普通树
子树区分明确区分左、右子树(即使为空)不区分左右
结点最大度数最多有两个孩子(度 ≤ 2)度可以大于 2,无限制
  1. 二叉树的性质(节选)
    • 性质 1:在第 $ i $ 层上最多有 $ 2^{i-1} $ 个结点($ i \geq 1 $)。

      如第 3 层最多有 $ 2^{2} = 4 $ 个结点。

    • 性质 2:高度为 $ k $ 的二叉树最多有 $ 2^k - 1 $ 个结点($ k \geq 1 $)。

      这种情况出现在满二叉树中。


满二叉树(Full Binary Tree)
在一棵高度为 $ k $ 的二叉树中,如果所有层次上的结点数都达到最大值,即第 $ i $ 层有 $ 2^{i-1} $ 个结点($ 1 \leq i \leq k $),且总节点数为 $ 2^k - 1 $,则称为满二叉树。

满二叉树的特点是:每个内部结点都有两个子结点,叶子结点全部集中在最底层。

完全二叉树(Complete Binary Tree)
对于一棵高度为 $ k $ 的二叉树,如果其前 $ k-1 $ 层构成一个满二叉树,并且第 $ k $ 层的叶子结点从左到右连续分布(没有空缺),则称为完全二叉树。

完全二叉树允许最后一层不满,但必须“从左向右填满”,不能跳过位置。


主要区别:

特性满二叉树完全二叉树
定义要求所有层都完全填满前 $ k-1 $ 层满,最后一层左对齐
结点数量必须是 $ 2^k - 1 $可以是 $ n $,满足 $ 2^{k-1} \leq n < 2^k $
结构特点每个非叶结点都有两个孩子允许某些非叶结点只有一个孩子(只能是左孩子)
是否一定是完全二叉树否(例如:只有根和右孩子就不是完全二叉树)
应用场景较少直接应用堆(Heap)、优先队列常用结构

举例说明

  • 高度为 3 的满二叉树:
A / \ B C / \ / \ D E F G → 共 7 个结点(= 2³ - 1)
  • 高度为 3 的完全二叉树(非满):
A / \ B C / \ / D E F → 第三层从左开始连续,G 缺失也合法
  • 不是完全二叉树的例子:
A / \ B C / \ D E → 中间缺少F或G,右子树出现而左为空,不连续

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 3:28:33

YOLOv8与PyTorch完美集成,打造最强计算机视觉开发环境

YOLOv8与PyTorch完美集成&#xff0c;打造最强计算机视觉开发环境 在智能摄像头、自动驾驶和工业质检日益普及的今天&#xff0c;如何快速构建一个稳定高效的计算机视觉开发环境&#xff0c;已经成为AI工程师面临的核心挑战之一。传统流程中&#xff0c;光是配置PyTorch、CUDA、…

作者头像 李华
网站建设 2026/9/5 23:24:38

YOLOv8项目Contributing指南:如何提交PR到主仓库

YOLOv8项目Contributing指南&#xff1a;如何提交PR到主仓库 在人工智能领域&#xff0c;开源项目的协作方式正在深刻影响技术演进的速度。以YOLOv8为例&#xff0c;这个由Ultralytics维护的目标检测框架每天被成千上万的开发者用于从智能安防到自动驾驶的各种场景。而它的持续…

作者头像 李华
网站建设 2026/9/11 21:56:34

R语言系统发育数据处理实战(高手都在用的8个工具包)

第一章&#xff1a;R语言系统发育分析概述R语言作为统计计算与图形展示的强大工具&#xff0c;在生物信息学领域&#xff0c;特别是在系统发育分析中扮演着重要角色。它不仅支持复杂的统计建模&#xff0c;还提供了丰富的包&#xff08;如ape、phytools、ggtree&#xff09;来处…

作者头像 李华
网站建设 2026/9/14 0:38:44

YOLOv8训练时如何添加注意力机制?

YOLOv8训练时如何添加注意力机制&#xff1f; 在目标检测任务日益复杂的今天&#xff0c;模型不仅要快&#xff0c;更要准——尤其是在面对小目标、遮挡、背景干扰等挑战时。尽管YOLOv8已经凭借其高效的架构和强大的性能成为工业界首选之一&#xff0c;但在某些复杂场景下仍存在…

作者头像 李华
网站建设 2026/9/14 3:36:06

YOLOv8训练时如何使用余弦退火学习率?

YOLOv8训练时如何使用余弦退火学习率&#xff1f; 在目标检测的实际项目中&#xff0c;我们常常遇到这样的问题&#xff1a;模型刚开始训练时收敛很快&#xff0c;但到了后期精度提升缓慢&#xff0c;甚至出现震荡&#xff1b;或者因为学习率设置不当&#xff0c;导致训练前期“…

作者头像 李华
网站建设 2026/8/29 12:03:35

前端HTTP请求方法全解析

前端请求接口的核心是通过 HTTP/HTTPS 协议与后端交互&#xff0c;常见方法包括原生 API&#xff08;XMLHttpRequest、fetch&#xff09;、封装库&#xff08;Axios&#xff09;、框架内置方案&#xff08;Vue Resource、React Query 等&#xff09;&#xff0c;不同方法在易用…

作者头像 李华