树的基本概念
树的定义
树(Tree)是一种非线性数据结构,由节点(或称为顶点)和边组成。树具有层次结构,每个节点可以有多个子节点,但每个子节点只能有一个父节点。树的顶部节点称为根节点(Root),根节点没有父节点。树中的节点可以分为内部节点(有子节点的节点)和叶子节点(没有子节点的节点)。
树的数学定义
树可以被定义为一个无环的连通图。具体来说:
- 无环:树中不存在任何环,即没有从一个节点出发经过若干条边后回到该节点的路径。
- 连通:树中的任意两个节点之间都存在一条路径。
树的基本术语
- 节点(Node):树中的每个元素称为一个节点,节点包含数据部分和指向子节点的指针。
- 根节点(Root):树的顶部节点,没有父节点。
- 父节点(Parent):一个节点的直接前驱节点。
- 子节点(Child):一个节点的直接后继节点。
- 叶子节点(Leaf):没有子节点的节点。
- 兄弟节点(Sibling):具有相同父节点的节点。
- 路径(Path):从一个节点到另一个节点的边的序列。
- 路径长度:从一个节点到另一个节点的边的数量
- 层次(Level):从根节点到某个节点的路径长度。
- 高度(Height)或深度:树的高度是从根节点到最远叶子节点的最长路径的长度。
- 子树(Subtree):以某个节点为根的树称为该节点的子树。
- 度(Degree):一个节点的子节点数量。树的度是指树中节点的最大子树数量。
树的性质
- 唯一根节点:树有且仅有一个根节点。
- 无环:树中不存在任何环。
- 连通:树中的任意两个节点之间都存在一条路径。
- 层次结构:树具有明显的层次结构,每个节点都可以通过路径到达根节点。
- 子节点唯一性:每个子节点只能有一个父节点。
树的常见类型
- 二叉树(Binary Tree):每个节点最多有两个子节点的树。
- 满二叉树(Full Binary Tree):每个节点都有两个子节点或没有子节点的二叉树。
- 完全二叉树(Complete Binary Tree):如果二叉树的所有叶子节点都在最后一层或倒数第二层,并且最后一层的叶子节点从左到右连续排列。
- 平衡二叉树(Balanced Binary Tree):左右子树的高度差不超过1的二叉树。
- 二叉搜索树(Binary Search Tree, BST):一种特殊的二叉树,其中每个节点的值大于其左子树中所有节点的值,小于其右子树中所有节点的值。
- AVL树:一种自平衡的二叉搜索树,其中每个节点的左右子树的高度差不超过1。
- 红黑树:一种自平衡的二叉搜索树,通过在节点上添加颜色属性(红色或黑色)来保证树的平衡。
- B树:一种多叉树,每个节点可以有多个子节点,通常用于数据库和文件系统中。
- B+树:B树的一种变体,所有叶子节点都包含指向相邻叶子节点的指针,便于范围查询。
- 堆(Heap):一种特殊的完全二叉树,通常用于实现优先队列。堆分为最大堆和最小堆。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!