二叉树:二叉树的定义,性质及存储结构

,二叉树的递归定义:二叉树(binary tree)是n (n >= 0)个节点(数据元素)组成的有限集合。当 n = 0 时,则为空二叉树;n > 0 时,二叉树由三部分组成:根节点,左子树,右子数(互不相交),子树也是一棵二叉树

二叉树的示意图:

二叉树:二叉树的定义,性质及存储结构_第1张图片二叉树的子节点分为左节点右节点

 图中第一个:A为根节点,B为左子节点,C为右子节点。

                                                 二叉树:二叉树的定义,性质及存储结构_第2张图片

如上图中含有6个结点,其中A是根节点,A的左子树TL由{B,C,D}构成,A的右子树TR由{E,F}构成;而左子树TL中B是根结点,左子树是{C},右子树是{D};右子树TR中,E是根结点,左子树为空,右子树为{F};以此类推。由上述可以看出在二叉树中用到了递归的概念。所以二叉树是递归定义的。

简单来说,二叉树就是每个节点最多有两个分支(分支的度小于2)的树结构,可以为空树。

,叉树中的常用术语

1. 节点:上图中的每个圆圈就代表一个节点。(也就是一个对象

    根节点:一棵树最上面的节点称为根节点。

    左右子树:某个节点的左分支叫做左子树,右分支叫做右子树。
    左右子节点:某个节点的左、右分支的根节点叫做该节点的左、右子节点。
    兄弟节点:具有相同父节点的节点互为兄弟节点。
    节点的度:节点拥有的子树数。
    叶子节点:没有任何子节点的节点称为叶子节点。
    内部节点:非叶子节点称为内部节点。
    根的层次:从根节点开始定义,根为第一层,根的孩子为第二层,如此计数,直到该结点为止。
    树的深度和高度:二叉树中节点的最大层次称为二叉树的深度高度。(下图中数的深度则为        4)

                 二叉树:二叉树的定义,性质及存储结构_第3张图片

 ,二叉树的性质

  性质一:若根节点的层次为1,则二叉树第n层最多有2^n-1(2的n-1次方)(i>=1)个节点。

  性质二:在高度为h的二叉树中,最多有2^h-1(这里是在2^h基础上-1)(h>=0)。

  性质三:设一棵二叉树的叶子节点数为n0,2度节点数为n2,则n0  = n2+1。

 四,二叉树的分类:

        满二叉树如果该二叉树的所有叶子节点都在最后一层,并且结点总数=2n-1 (n为层数),则为满二叉树。如下图:

                                                     二叉树:二叉树的定义,性质及存储结构_第4张图片

     完全二叉树:在一棵二叉树中,除了最后一层,都是满的,并且最后一层是满(满二叉树是完全二叉树)的或者是右边缺少连续若干节点,成为完全二叉树。

如下图:

                                                      二叉树:二叉树的定义,性质及存储结构_第5张图片

   二叉搜索树:又称为二叉查找树,排序二叉树,可为空树节点满足左子树所有节点权<根节点权<右子树所有的节点权,不存在相等值的节点如下图:

                                                           在这里插入图片描述

 

  平衡二叉树(AVL):是一种结构平衡的二叉搜索树(左右子树都为平衡二叉树),即左右子树深度差绝对值不超过1。常见的平衡二叉树有AVL树、红黑树等。如下图:

                                                    二叉树:二叉树的定义,性质及存储结构_第6张图片

  五,二叉树存储结构:在数据结构中数据的物理存储结构可以分为两种,一种是顺序存储,一种是链式存储结构。二叉树主要采用链式存储结构顺序存储结构仅适用于完全二叉树

 顺序储存结构:用一组连续的存储单元存放二叉树中的结点。一般按照二叉树结点从上至下,从左到右的顺序存储。这样做可以最大可能的节省存储空间又可以利用数组元素下标值确定结点在二叉树中的位置,以及结点之间的关系。如图:

            二叉树:二叉树的定义,性质及存储结构_第7张图片

链式存储结构:用链表表示一颗二叉树,用链表来指示元素的逻辑关系。

1.二叉链表存储:对于一个任意的二叉树,每个结点最多有两个孩子,一个双亲结点,所以可以设计让每一个结点,至少包括三个域:数据域,左子域,右子域(其中数据域存放数据信息,lchild和rchild分别存放指向左孩子和右孩子的指针),当某个孩子不存在时,则域为空(用符号^或者NULL表示)。

  二叉树:二叉树的定义,性质及存储结构_第8张图片

   

2.三叉链表存储:

每个结点由四个域组成:

                  二叉树:二叉树的定义,性质及存储结构_第9张图片

添加的parent域则用来存储指向该结点双亲结点的指针便于查找子结点与便于查找父结点,缺点就是增加了空间的开销

3.二叉链表存储与三叉链表存储如下图:

二叉树:二叉树的定义,性质及存储结构_第10张图片

 

 

 

 

 

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