树型结构基本概念

树是一种非线性结构,在大量数据进行操作时,线性结构操作速度相对较慢。数是一种很有用的抽象结构。来看下树的几个基本概念。

树上每个元素称之为节点,相邻两个元素间连接关系叫父子关系。没有父节点的元素是根节点,没有子节点的元素叫做叶子节点。一个节点最多只能由一个父节点。

节点的高度:节点到叶子节点的最长路径(该节点-> 叶子节点)

节点的深度:根节点到该节点经过的边数 (根节点 -> 该节点)。根节点的深度是0

树的高度:根节点的高度(根节点 -> 叶子节点)。所有的叶子节点的高度都是0

节点的层次:从根节点数,节点在第几次。

例下面的树:

树型结构基本概念_第1张图片

树的高度是4(A->B->D->J)

B的深度是1

二叉树

二叉树是一种特殊的树形结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点

满二叉树

满二叉树是一种特殊的二叉树,它有如下几个特点:

  1. 所有非叶子节点都有两个子节点;
  2. 所有叶子节点都在同一层上;
  3. 深度为k的二叉树共有2^(k+1)-1个节点。

因此,满二叉树的节点数目是确定的,深度也是确定的。由于具有这些特点,满二叉树的性质很容易被应用到一些问题中,比如堆、哈夫曼编码等。

示例:深度为3的满二叉树。

        1
      /   \
     2     3
    / \   / \
   4   5 6   7
完全二叉树

对于除最后一层外,其他层的节点数都达到最大值,即除最后一层外的每一层都是满的,并且最后一层的节点都尽量靠左排列。

叶子节点都在最底下两层。最底层的叶子节点都靠左侧。除了最后一层其它层的节点个数都达到最大。

示例:一颗深度为4的完全二叉树。

        1
      /   \
     2     3
    / \   /
   4   5 6
  /
 7
二叉树的遍历

二叉树的遍历常见的有前序遍历、中序遍历和后续遍历。这三个遍历都是相对根节点来说的。

前序遍历:根节点 -> 左子节点 -> 右子节点

中序遍历:左子节点 -> 根节点 -> 右子节点

后续遍历:左子节点 -> 右子节点 -> 根节点

除了上面说的三种方式还有一种层序遍历。从根节点按节点所在层次依次遍历。

你可能感兴趣的:(数据结构与算法,数据结构)