返回

初见二叉树,妙趣无穷的树形结构

后端

寻根溯源,树的由来

树的概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒立的树,树根朝上,树枝朝下。树中的结点称为树的元素,结点之间的连接称为树的边。

树的基本术语

  • 根结点:树中唯一没有父结点的结点称为根结点。
  • 父结点:如果结点A是结点B的直接前驱结点,则称A为结点B的父结点,B为A的子结点。
  • 子结点:结点A的后继结点称为结点A的子结点,反之,结点A的前驱结点称为结点A的父结点。
  • 兄弟结点:同一父结点的子结点称为兄弟结点。
  • 叶结点:没有子结点的结点称为叶结点,也称为终端结点。
  • 度:结点的子结点数称为结点的度。
  • 高度:树中结点的最大层次称为树的高度。
  • 深度:结点到根结点的边数称为结点的深度。

二叉树的结构

二叉树是树的一种特殊情况,它满足以下两个条件:

  1. 每个结点最多有两个子结点。
  2. 二叉树的结点有左右之分。

二叉树的结构如下图所示:

            根结点
           /     \
         左子树   右子树
       /   \     /   \
     孙结点 孙结点 孙结点 孙结点
    /     \   /     \
   曾孙结点 曾孙结点 曾孙结点 曾孙结点

二叉树的遍历

二叉树的遍历是指按照一定的规则访问二叉树中的所有结点。二叉树的遍历算法有很多种,其中最常见的有三种:先序遍历、中序遍历和后序遍历。

先序遍历

先序遍历是指按照根结点、左子树、右子树的顺序访问二叉树中的所有结点。先序遍历算法的步骤如下:

  1. 访问根结点。
  2. 先序遍历左子树。
  3. 先序遍历右子树。

中序遍历

中序遍历是指按照左子树、根结点、右子树的顺序访问二叉树中的所有结点。中序遍历算法的步骤如下:

  1. 中序遍历左子树。
  2. 访问根结点。
  3. 中序遍历右子树。

后序遍历

后序遍历是指按照左子树、右子树、根结点的顺序访问二叉树中的所有结点。后序遍历算法的步骤如下:

  1. 后序遍历左子树。
  2. 后序遍历右子树。
  3. 访问根结点。

二叉树的应用

二叉树在计算机科学中有着广泛的应用,其中最常见的应用有:

  • 二叉查找树:二叉查找树是一种具有查找效率高的数据结构,它利用了二叉树的特性,将数据按照某种顺序组织起来,以便快速查找。
  • 二叉堆:二叉堆是一种具有快速插入和删除操作的数据结构,它利用了二叉树的特性,将数据按照某种顺序组织起来,以便快速访问。
  • 哈夫曼树:哈夫曼树是一种具有最优编码长度的数据结构,它利用了二叉树的特性,将数据按照某种顺序组织起来,以便生成最短的编码。
  • 二叉表达式树:二叉表达式树是一种表示数学表达式的