二叉树(Binary Tree)

定义

二叉树是每个节点最多有两个子节点(左子节点和右子节点)的树结构。它是大多数高级数据结构的基础,也是一种核心算法思维。

核心特性

基本结构

class TreeNode {
    int val;
    TreeNode left, right;
}

重要性

  1. 数据结构基础:红黑树、多叉树、二叉堆、图、字典树、并查集、线段树等高级数据结构均基于二叉树
  2. 算法思维:回溯、BFS、动态规划等穷举算法本质是将问题抽象为树结构

常见类型

类型 英文术语 特点
满二叉树 Perfect Binary Tree 每层节点全满,总节点数 = 2^h - 1(h为深度)
完全二叉树 Complete Binary Tree 节点紧凑靠左排列,除最后一层外每层全满
二叉搜索树 Binary Search Tree (BST) 左子树所有节点值 < 当前节点值 < 右子树所有节点值
高度平衡二叉树 Height-Balanced Binary Tree 每个节点的左右子树高度差 ≤ 1,树高为 O(logN)
自平衡二叉树 Self-Balanced Binary Tree 增删节点时自动调整结构保持平衡(如红黑树)

注意中英文差异:中文「满二叉树」对应英文 Perfect Binary Tree;英文 Full Binary Tree 指所有节点要么无子节点、要么有两个子节点。

实现方式

  1. 链式存储:最常见的 TreeNode 结构,含左右子节点指针
  2. 数组存储:完全二叉树/二叉堆等场景,利用索引规律(父节点 i,左子节点 2i+1,右子节点 2i+2)
  3. 哈希表(邻接表):用键值对表示父子关系,等价于图的邻接表表示
  4. 递归树:基于函数调用栈生成的递归树结构

遍历方式

二叉树只有两种遍历方式:

遍历方式 本质 衍生算法
递归遍历(DFS) 依赖函数调用栈,先左后右固定顺序 DFS 算法、回溯算法
层序遍历(BFS) 借助队列,一层一层遍历 BFS 算法

递归遍历的三个关键位置

位置 执行时机 效果
前序位置 刚进入节点时 前序遍历
中序位置 左子树完成后,右子树前 中序遍历(BST 中序遍历有序)
后序位置 左右子树都完成后 后序遍历

相关概念


Interactive Graph