二叉树的基本理论知识

树的特征

树是一种数据结构,它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。

区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:

  1. n>0时,根节点是唯一的,不可能存在多个根节点。
  2. 每个节点有零个至多个子节点;除了根节点外,每个节点有且仅有一个父节点。根节点没有父节点。

 树的相关概念

树有许多相关的术语与概念,在学习树的结构之前,我们要熟悉这些概念:

子树:除了根节点外,每个子节点都可以分为多个不相交的子树。(图二)

孩子与双亲:若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"。在图一中,B、H是A的孩子,A是B、H的双亲。

兄弟:具有相同双亲的节点互为兄弟,例如B与H互为兄弟。

节点的度:一个节点拥有子树的数目。例如A的度为2,B的度为1,C的度为3.

分支节点:除了叶子节点之外的节点,也即是度不为0的节点。

 

 

 

 

两种特殊的二叉树

斜树

所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。左斜树和右子树统称为斜树。
斜树已经退化成线性结构,二叉树在查找上表现出来优异性能在斜树得不到体现。

 

 

满二叉树

满二叉树要满足两个条件:

  1. 所有的节点都同时具有左子树和右子树。
  2. 所有的叶子节点都在同一层上。

在同样深度的二叉树中,满二叉树的节点数目是最多的,叶子数也是最多的。

 

 完全二叉树

完全二叉树(Complete Binary Tree) :若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

 

 

 

二叉树的存储结构

1. 二叉树的顺序存储

^代表不存在的结点。

对于右斜树,顺序存储结构浪费存储空间

 

2. 二叉链表

链表每个结点包含一个数据域和两个指针域:

其中data是数据域,lchild和rchild都是指针域,分别指向左孩子和右孩子。

 

 

posted @ 2018-05-22 22:07  苏格拉底的落泪  阅读(763)  评论(0编辑  收藏  举报