图和树的概念性质
时间: 2025-03-30 07:08:57 浏览: 30
### 图和树的数据结构定义与基本性质
#### 树的定义与基本性质
树是一种非线性的数据结构,由 n (n ≥ 0) 个节点组成的有限集合。如果 n = 0,则称为空树;否则,在任何非空树中存在唯一的根节点,并且除根节点外的所有其他节点可划分为 m (m > 0) 个互不相交的有限集,这些集合中的每一个都是一棵树,被称为子树[^1]。
对于二叉树而言,其特殊之处在于每个节点至多有两个子树——左子树和右子树,并且这两个子树的位置不可随意交换。因此,二叉树具有严格的结构性质,具体表现为以下特点:
- 每个节点最多拥有两个子树;
- 左子树和右子树严格区分位置关系,不能混淆;
- 存在五种基本形态:空二叉树、单根节点无子树、仅有左子树、仅有右子树以及同时具备左右子树的情况[^2][^3]。
关于节点的层次划分,通常规定根节点位于第 1 层,而每增加一层则表示向下深入了一级。整棵树的高度即为其最深叶子节点所在层号的最大值[^4]。
#### 图的定义与基本性质
图是由顶点(Vertex)和边(Edge)构成的一种抽象模型 G(V, E),其中 V 表示顶点集合,E 则代表连接这些顶点之间的边集合。依据是否存在方向性,图可以进一步区分为有向图和无向图两大类别:
- **无向图**:若任意一条边 e ∈ E 均未指定起点与终点的方向关联,则此图为无向图。
- **有向图**:反之,若有明确规定的起始端到终止端路径指示,则属于有向图范畴。
另外,基于连通性和循环特性还可以细分出更多类型的图形式,比如强连通图、弱连通图、简单图等概念。值得注意的是,某些情况下还会引入权重参数赋予各条边上不同的数值意义,从而形成加权图的概念。
```python
class TreeNode:
def __init__(self, value=0, left=None, right=None):
self.value = value
self.left = left
self.right = right
def tree_height(node):
if node is None:
return 0
else:
lheight = tree_height(node.left)
rheight = tree_height(node.right)
if lheight > rheight:
return lheight + 1
else:
return rheight + 1
```
上述代码展示了如何通过递归方法计算一棵给定二叉树的高度。
阅读全文
相关推荐

















