(一)树结构---基础

2019-04-29  本文已影响0人  曦夫

导语

1.树的概念

树是n(n≥0)个结点的有限集。

1.这个树中每个元素都称之为结点
2.结点的度:每个结点所拥有的子树数量
3.根据结点度的数量划分为叶子结点(度为0)和非终端结点(度≠0)
4.非终端结点中除了根节点(度=2),其余又称内部节点或分支结点(1≤度≤2)

1.树中结点最大的度:max(结点度)
2.由于我们研究是主要是二叉树,而二叉树每个节点的度只能为0、1或2,所以二叉树树的度也只能为0,1或2

1.结点层:以根节点为第一层,根据子树依次类推,非空二叉树中,第i层最多有ni-1(i≥1)个结点
2.树的深度:结点层最大的叶子结点的层为树的深度:max(叶子结点层)


2.二叉树

1.二叉树定义

每个结点最多有两个子树,即二叉树中不存在度大于2的结点。

2.满二叉树(完美二叉树)

深度为n(n>0)的满二叉树有2n-1个结点

满二叉树

2.完全二叉树

深度为n(n>0)的非空二叉树,第1层到n-1层为满二叉树,第n层从右向左缺失若干结点的树。即叶子结点层的所有结点都在最左边。


完全二叉树

3.完满二叉树

除了叶子结点,任意结点的度都为2的二叉树;即除了叶子节点,其他结点都需要有两个孩子。


完满二叉树

4.区别与联系

1.三种二叉树的关系:


二叉树结构图

2.上图中即为完全二叉树又为完满二叉树的例子


完全二叉树&&完满二叉树

5.最优二叉树(哈夫曼树)

5.1. 相关概念
5.2.构造最优二叉树
  1. 在某些算法判断中,利用哈夫曼树可以得到最佳的判断算法,书上的例子是:某学校学生根据考试成绩给学生评级为不及格(score<60),及格(60≤score<70),良(70≤score<90),优(score≥90);
    每一分数段的学生数比例为权值,若判断设置合理程度,关系到数据所经过的比较次数,如何得到最小的比较次数,提高判断的效率
    PS:笔者没有对哈夫曼树,哈夫曼编码进行深入探究,若想深入理解的,请翻阅相关资料。

3.查找二叉树

1.二分搜索树(二叉顺序树、二叉查找树)

1.左子树的所有结点都小于它的根结点
2.右子树的所有结点都大于它的根结点
3.它的左右子树也满足二分搜索树的性质
在本文第二部分介绍二叉树中所有纯数字的图皆为二分搜索树

2.平衡二叉树

1.首先:平衡二叉树是二分搜索树,所以平衡二叉树必须满足二分搜索树的性质
2.其次:任何结点的左子树的深度和右子树的深度之差(平衡因子)的绝对值不超过1


平衡二叉树和非平衡二叉树

3.B树与B+树

4.红黑树

  1. 红黑树是基于二分搜索树,所以满足二分搜索树的性质
  2. 红黑树性质:
     1.每个结点或为黑色,或为红色
     2.根结点为黑色
     3.每个叶子结点为黑色的(红黑树中叶子结点指空结点NIL)
     4.如果一个结点是红色的,那他的孩子结点为黑色
     5.从任意一个结点到叶子结点,经过的黑色结点是一样的
  3. 红黑树特点
     1.红黑树严格意义上来说并不是平衡二叉树,仅对于黑结点来说,为黑绝对平衡的二叉树(即平衡满二叉树)
     2.红黑树与2-3树(2-3-4树)的性质类似
     3.红黑树的统计性能更优(增删查改综合的平均性能)


    红黑树

PS:具体介绍:


4.二叉树的遍历

4.1.按遍历根结点的顺序划分(打印根结点的顺序)

1.从树的根结点A开始遍历,序号和箭头代表遍历过程中经过结点的先后顺序,
2.不管哪种遍历,对于一个二叉树来说,一定会先经过根结点,左子树,根结点,右子树,根结点
3.每一个结点都会经过三次,叶子结点默认经过两次空子结点。


按根结点划分遍历
1.前序遍历
2.中序遍历
3.后序遍历

4.2.按层遍历划分

按层遍历是指从左向右,从第一层到最高层依次遍历,即从根结点所在层到最高的叶子结点所在层

层序遍历顺序

遍历顺序:根结点,...,内部结点,...,叶子结点
遍历结果:a,b,c,d,e,f,g,h,i,j,k,l,m,n,p
若使用一维数组存储二叉树结构,数据在存储的顺序就是按层遍历顺序

上一篇 下一篇

猜你喜欢

热点阅读