二叉树的定义及相关性质

        树,是有限节点的集合。生活中的树是树根在下面,数据结构中的树的根在顶部,如下图:

二叉树的定义及相关性质_第1张图片

        公司的人员组织架构,董事长,总经理,副总。。。,这种模型可以用二叉树表示,还有一些压缩算法也用到了树结构。

二叉树的定义及相关性质_第2张图片

树的几个概念

(1)度:有几个直接的孩子,例如,A的度是3,它有BCD三个孩子,B的度是2,它有EF两个孩子,度为0的节点也就是叶子节点(终端节点)

(2)祖先:E的祖先是B,A , 从当前节点一直往上找

(3)叶子节点:下面的一层称为叶子节点,也可以称为终端节点。

(4)根:非叶子节点。

(5)树的深度,如下图

二叉树的定义及相关性质_第3张图片

 (6)森林:不交叉的几棵树在一起称为森林

 

二叉树

       所有节点的度都小于等于2的树称为二叉树。下面这几种都可以称为二叉树

二叉树的定义及相关性质_第4张图片

1、二叉树的遍历

       3种遍历方式,根据根节点的位置,分为前序,中序,后序。

二叉树的定义及相关性质_第5张图片

                                                                               前序:根左右,ABC

                                                                              中序 :左根右, BAC

                                                                        后序遍历:左右根, BCA

       例如下面这颗二叉树

二叉树的定义及相关性质_第6张图片

          从根节点A在结果中的位置也可以看出是那种遍历方式。

二叉树的存储结构

     (1)顺序存储,类似于数组,例如下面这颗二叉树,在数组中的存储是:3561972

二叉树的定义及相关性质_第7张图片

       数组存储时,如果节点不存在就用0表示,例如下面的,在数组中就是35019

二叉树的定义及相关性质_第8张图片

        顺序存储可以作为一种特殊形式,有相关需求时可以采用,

     (2)链式存储,这是二叉树最好的存储形式,用一个结构体表示节点,有数据成员,指向左子树的指针,指向右子树的指针。

        关于二叉树的实现,可以参考下一篇博客:C++实现二叉树 

满二叉树与完全二叉树

二叉树的定义及相关性质_第9张图片

       完全二叉树的定义:如果二叉树的深度为h, 除h层外,其它各层的节点数都达到最大数,且第h层的所有节点都连续集中在最左边,这种二叉树称为完全二叉树。

       

      二叉树的定义及相关性质_第10张图片

 

 

 

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