数据结构 二叉树核心概念与特性

一、树与二叉树的基础概念

在数据结构中,树是一种典型的一对多关系的非线性结构,我们可以从节点、前驱后继、度、层、高度、深度这些维度来理解它的构成。

1. 树的核心术语

  • 节点 :是构成树形结构的基本单元,我们可以根据它的位置和作用进一步划分:
    • 根节点:树的起始节点,只有后继节点,没有前驱节点。
    • 分支节点:既有前驱也有后继的节点,在树形结构中最多只有一个前驱,但可以有多个后继。
    • 叶子节点:位于树的最末端,只有前驱,没有后继的节点。
  • 前驱(祖先):指的是当前节点的 "来源" 节点,也就是在路径上直接指向它的上一个节点。
  • 后继(子孙):是当前节点的后续节点,也就是由它直接指向的下一级节点。
  • :代表节点拥有的前驱或后继的数量,又可以细分为:
    • 入度:节点拥有的前驱数量,在树形结构中所有节点的入度均为 1。
    • 出度:节点拥有的后继数量,不同类型的节点出度不同,比如叶子节点的出度为 0。
  • :根节点所在的位置为第 1 层,每向下经过一个节点,层数就加 1。
  • 高度:一个节点的高度,是指从该节点到距离它最远的叶子节点之间的距离。
  • 深度:一个节点的深度,是指从根节点到该节点所经过的节点个数。
  • 树的高度 / 深度:整棵树的高度等于树的深度,也等于树的总层数。

二、二叉树的定义与特性

1. 二叉树的定义

二叉树是树形结构的一种特殊形式,它的核心约束是:每个节点最多有 2 个后继节点 ,这两个后继节点分别被称为左孩子 (左侧的子节点)和右孩子(右侧的子节点)。

2. 常见的二叉树类型

  • 满二叉树:一种理想的二叉树结构,其所有的叶子节点都在同一层上,并且除了叶子节点之外,每个节点都有左右两个子节点。
  • 完全二叉树:将二叉树的所有节点按层序展开并连续编号,若编号顺序与满二叉树的编号完全对应,就是完全二叉树。它的特点是叶子节点只会出现在最后两层,且最后一层的叶子节点都靠左排列。

3. 二叉树的重要特性

  • 第 k 层最多节点数 :在二叉树的第 k 层上,最多有 2^(k-1) 个节点(k ≥ 1)。
  • 前 k 层最多节点数 :在二叉树的前 k 层中,最多有 2^k - 1 个节点(k ≥ 1)。

三、二叉树的遍历方式

遍历是操作二叉树的基础,我们可以按照 ** 深度优先(DFS)广度优先(BFS)** 两大思路来遍历二叉树。

1. 深度优先遍历(DFS)

深度优先遍历的核心是沿着一条路径尽可能深地探索,直到无法继续再回溯,它包含三种常见的顺序:

  • 前序遍历 :访问顺序为 根 → 左 → 右
  • 中序遍历 :访问顺序为 左 → 根 → 右
  • 后序遍历 :访问顺序为 左 → 右 → 根

2. 广度优先遍历(BFS)

广度优先遍历也叫层序遍历,它的核心是按照树的层次,从上到下、从左到右依次访问每一个节点。


四、总结

二叉树是数据结构中非常重要的基础内容,无论是理解后续的平衡二叉树、红黑树,还是解决算法中的路径问题、动态规划问题,都离不开对二叉树概念和特性的掌握。后续我们还会结合具体的代码实现,来深入讲解二叉树的遍历和各种操作。

相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎4 小时前
滑动窗口算法
算法·哈希算法
sali-tec4 小时前
C# 基于OpenCv的视觉工作流-章46-矩形卡尺
图像处理·人工智能·opencv·算法·计算机视觉
仟濹4 小时前
【算法打卡day39(2026-04-06~08 周一~周三)】(10道蓝桥杯真题)今日练习:蓝桥杯第13届省赛B组Cpp组
算法·职场和发展·蓝桥杯
美式请加冰4 小时前
最短路径问题
java·数据结构·算法
会编程的土豆4 小时前
【数据结构与算法】 时间复杂度计算
数据结构·c++·算法
小年糕是糕手4 小时前
【35天从0开始备战蓝桥杯 -- Day9】
数据结构·数据库·c++·算法·蓝桥杯
山甫aa4 小时前
STL---常见数据结构总结
开发语言·数据结构·c++·学习
知星小度S4 小时前
算法训练之递归(二)
算法
无限进步_4 小时前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
Fly Wine4 小时前
Leetcode只二叉树中序遍历(python解法)
算法·leetcode·职场和发展