树结构的形状很像现实生活中一棵倒置的大树。树结构是由一堆节点组成的具有层级关系非线性数据结构。树顶部的节点被称为根节点,它通常是搜索、遍历等操作的起始位置。树结构在很多地方都有应用,比如操作系统中的文件结构。

在使用树结构需要我们掌握一些基础概念,便于学习交流使用。常见的树的概念有:

根节点(Root):树的最顶层节点。

父节点(Parent Node):节点沿着边往上一层的节点称为该节点的父节点。

子节点(Child Node):节点沿着边往下一层的节点称为该节点的子节点。

兄弟节点(Sibling):同一个父节点的子节点互为兄弟节点。

(Edge):父节点和子节点之间连接,形成边。

叶子节点(Leaf):没有子节点的节点称为叶子节点。

子树(Subtree):以某个子节点为根节点的树分支。

节点的深度(Depth):是指从根节点到该节点的距离。

节点的高度(Height):该节点到叶子节点的最长距离。

树的高度(Height of tree):根节点到叶子节点的最长距离。

节点的层级(Level):该节点的父节点数量+1。

节点的度(Degree):该节点的子节点数量

二叉树

基本概念

每个节点最多有两个子节点的树被称为二叉树。在给定的二叉树中,任何级别的最大节 点数为 $2^{i-1}$,其中 $i$ 是级别编号

二叉树的分类

  • 满(完美)二叉树(perfect binary tree):每个节点都有 $0$ 个或 $2$ 个子节点,所有的叶子节点都在同一层。除叶子节点以外,所有内部节点都必须有两个子节点。

  • 完全二叉树(complete binary tree):完全二叉树除了最后一层之外的所有层次都被填满,最后一层有的位置只有左节点。注意,完美二叉树是特殊的完全二叉树

二叉树的存储

  • 顺序存储:用数组结构来表示二叉树。定义一个数组,用于存储树的所有节点。树中的节点数决定了数组的大小。数组的第一个位置存储根节点。如果一个节点存储在第 $i$ 位置那么它的左子节点和右子节点分别存储在第 $2i$ 和第 $2i+1$ 位置。

  • 结构体存储,使用结构体存储每个节点的数据、左孩子编号、右孩子编号。
struct node{
  [数据类型] data;//数据
  int left,right;//左孩子编号、右孩子编号
}

二叉树的遍历

  • 前序遍历

递归输出前序序列

  • 中序遍历

递归输出中序序列

  • 后序遍历

递归输出后序遍历

Copyright ©图灵之星 2024,转载需注明出处该文件修订时间: 2026-09-15 11:04:43

results matching ""

    No results matching ""