数据结构(十)二叉树—— 基本概念

二叉树结构一直以来都是数据结构课程中的重点和难点。在原始的二叉树的基础上,有不断演化出了很多其他基于二叉树的结构,但是不管从二叉树衍生出来的结构多么复杂多变,但是底层对于二叉树结构的理论和操作都是相通的。所以从最基本的原生二叉树开始,不断进行总结和实践,最终达到理解和掌握原生二叉树和一些比较有代表性的二叉树变种的目的。

一、最常见的树结构

在现实生活中,树状结构是十分普遍的。例如在我们的计算机磁盘上存储的文件夹和文件,就能够构成一个文件树结构。其中盘符下存储有文件和文件夹,文件夹下又有子文件和子文件夹,但是文件之下一定不会有其他子文件和子文件夹。

在上图中 :我们称所有的盘符、文件夹和文件为树结构的节点,而连接节点与节点之间的通路,称之为路径。如果一个节点指向另一个节点(例如文件夹1和文件2的关系),那么我们称上面指出的节点为父节点或者双亲节点(文件夹1),下面被指向的节点为父节点的孩子节点(文件2)。其中,孩子节点简称子节点

二、二叉树

上面我们已经了解了什么是树结构。那么,如果在一棵树中,所有的节点都最多只有两个分支,那么这种特殊的树结构,我们称之为二叉树结构。

三、二叉树节点的结构

我们先来回忆一下单链表结构,在单链表结构中,同样存在节点的概念,我们使用节点存储数据和下一个节点的内存地址,单链表节点如下图所示:

然后将这样的节点串联起来,我们就得到了单链表结构:

public class Node {
    Object data;  //数据域
    Node next;  //指针域
   
}

我们将上述节点的结构稍加变化,让每一个节点都具有两个指针域:

然后我们让其中的每一个指针都指向另一个节点,于是乎我们得到如下图所示的一种结构:

不难看出,上面的两张图之间是等价的。所以同样的,只要我们在单链表节点结构的基础上稍加改造,就能够得到二叉树节点的代码,习惯性的,我们将一个父节点左边的子节点称之为左孩子节点,右边的子节点称之为右孩子节点:

class Node {

    Object date;  //数据域
    Node leftChild;  //左孩子节点
    Node rightChild;  //右孩子节点
}

四、根节点、中间节点和叶子节点

根节点:二叉树最上面的节点,只有子节点,没有父节点。
中间节点:如果一个节点既有父节点,又有子节点,那么我们称这种节点为中间节点。
叶子节点:如果一个节点只有父节点,没有任何子节点,那么我们称这种节点为叶子结点。

五、满二叉树和完全二叉树

1、满二叉树

如果在一个二叉树结构中,除最后一层的叶子结点之外,其余每一个节点都必须有两个子节点,那么这种二叉树称之为满二叉树

在一个满二叉树中存在如下特性:

  • 满二叉树的节点数量一定是一个奇数,因为从第2层开始,每一层的节点数量都是2的整数倍,所以最后加上根节点,那么节点的数量一定是奇数
  • 一个具有k层的满二叉树,其节点总数为2^k-­1个。这个结论很好推理,实际上就是一个公比为2的等比数列和
  • 第i层上面的节点数量为2的(i-1)次方个
  • 一个k层的满二叉树,其叶子结点数量(也就是最后一层的节点数量)为2^k­-1 个
  • 如果按照从上到下、从左到右的方式为满二叉树的每一个节点从1开始进行编号,那么满二叉树第k层中的最大编号取值为2^k ­-1
  • 满二叉树中,编号为m的节点和其左右孩子节点的编号关系是:左孩子编号 = 2m,右孩子编号 = 2m+1

2、完全二叉树

在一个二叉树结构中,如果只有最后一层和倒数第2层存在叶子结点,那么这个二叉树就是一个完全二叉树

六、其他概念和公式的补充

1、节点的度:一个节点的度可以简单的理解为一个节点孩子节点的数量。在许多面试题中,都使用n 0 、n 1 、n 2 分别表示度为0、度为1、度为2的节点的数量,即有0个孩子节点、1个孩子节点、2个孩子节点的节点数量。

2、在任意一棵二叉树中,这些节点的数量,之间存在如下关系:

(1)n 2  = n 0  -1:即度为2的节点总比度为0的节点少1个,也就是说,在任意二叉树中,同时具有左右孩子的节点,总比叶子结点的数量少一个
(2)从上面的公式我们能够推导出来:n 总  = n 0  + n 1  + n 2  = 2*n 0  + n 1  -1 = n 1  + 2*n 2  + 1,且n 1= n 总  ­- n 0  ­-n 2  = n 总  ­-2n0 + 1 = n 总  ­-2*n 2 -
所以,只要我们知道一个二叉树中总的节点个数以及度为0或者度为2的节点数量,就能够推导出其他度的节点的数量
 

发布了98 篇原创文章 · 获赞 165 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/cyl101816/article/details/95687501