Java 数据结构:从树形结构到二叉树详解
一、树形结构
1. 树形结构的概念
树是一种非线性的数据结构,它模拟了自然界中树的结构。树形结构由若干个节点 (node) 组成,这些节点之间存在明确的层次关系。
树是递归定义的。
- 结点的度:一个结点含有子树的个数称为该结点的度。
- 树的度:一棵树中,所有结点度的最大值称为树的度。
- 叶子结点或终端结点:度为 0 的结点称为叶结点。
- 双亲结点或父结点:指向其他节点的节点。
- 孩子结点或子结点:被其他节点指向的节点。
- 根结点:每个树形结构有一个根节点 (root),它是树的起点。
- 非终端结点或分支结点:度不为 0 的结点。
- 兄弟结点:具有相同父结点的结点互称为兄弟结点。
- 堂兄弟结点:双亲在同一层的结点互为堂兄弟。

2. 树的表示形式
常见的表示法包括:双亲表示法、孩子表示法、孩子双亲表示法、孩子兄弟表示法等。
class Node {
int value; // 数据域
Node firstChild; // 第一个孩子
Node nextBrother; // 下一个兄弟
}

二、二叉树
1. 概念
二叉树是一种非线性数据结构,其中每个节点最多有两棵树,分别称为左子树和右子树。

2. 二叉树类型
二叉树主要分为满二叉树和完全二叉树。
2.1 满二叉树
定义:每个节点都有 0 个或 2 个子节点。
特点:没有只有 1 个子节点的节点。




