二叉树相关知识点

来源:互联网 发布:淘宝分销 编辑:程序博客网 时间:2024/06/05 18:48

1.二叉树是数据结构的一种,我们说数据结构包括四种结构即线性结构,树状结构,图形结构和集合结构,而二叉树是树状结构的一种特殊表现,如还有四叉树等等。

2.为什么要学习树状结构?

主要是树状结构可以很好的解决我们后续在数据库中的排序和检索问题,在算法领域中诸如建堆和区间树等操作,数据挖掘领域构建决策树以及GIS专业都都需要运用到树的知识等。

3.为什么要介绍二叉树而不是其他的n叉树?

二叉树构造简单,是特殊的树状结构,其他的树都可以由二叉树构造而得。

4.二叉树的定义:

数据结构中的定义:

(三元法):Struct {D:数据元素

            R:数据元素间的关系

            O:数据的操作}

(概念法):要么是空树,要么是由唯一一个根节点和分别称为左子树,右子树的,互不相交的二叉树构成。

5.二叉树的操作类型

引用性操作:包括二叉树的先序,中序,后序和按层次遍历以及求二叉树的深度等。

删除性操作和插入性操作。

6.二叉树的5种类型:

空树:空集    只有根节点      根节点+左孩子      根节点+右孩子      根节点+左孩子+右孩子

7.二叉树的度:

一个节点所具有的分支数(叶子节点的度为0),二叉树的度可取值0,1,2。

8.二叉树的节点类型:

根节点 叶子节点  内部节点

9.二叉树的性质

(1)二叉树的第N层所具有的节点数最大为2^(N-1)个,此处N>=1,N为1表示第一层即根节点所在的层。

(2)N层二叉树具有节点总数最大为:2^(N)-1

  此处给你们证明一下:其实很简单的,利用性质(1),前N层的节点总数=2^0+2^1+2^2+...+2^(N-1)=2^(N)-1。

(3)叶子节点数为N0,自由度为2的节点数为N2,则N0=N2 +1。

证明:(其实证明起来也简单)

二叉树的总结点数为N,N0为自由度为0的节点总数(也就是叶子数),N1为自由度为1的节点总数,N2为自由度为2的节点总数

则有关系试:

N=N0+N1+N2(对吧,此式大家应该能想通吧)

然后二叉树的总支数 B=2*N2+N1(大家有没有疑惑呢?如果没有跳过,如果有的话,我解释一下,其实自由度为2的节点会有两个分支,而自由度为1的节点有一个分支,自由度为0的节点也就是叶子节点没有分支)。

而N=B+1(这个式子大家应该也知道吧,我们知道如果对于一个二叉树,我们自底向上,是不是一个节点对应一个分支,最后的根节点没有,也就是打个比方,如果一个分支作为一个节点的前驱,其他所有节点都有,而根节点没有,所以有分支数+1=节点总数)

得到的这3个关系式会推出N0=N2+1

(4)

先介绍满二叉树:满二叉树就是节点总数等于2^(N)-1的二叉树

再介绍完全二叉树:完全二叉树就是除最后一层外的其他各层都是满二叉树,且最后一层的叶子从左到右填充。

因此性质来了:

n个节点的完全二叉树的深度为log2(n)(下取整)+1

证明:

设二叉树的深度为K(所谓深度就是二叉树的层数)

则对于完全二叉树有:

2^(k-1)-1+1<=n<2^(K)

为什么?

我解释一下,由于是完全二叉树,所以前K-1层为满二叉树,具有节点总数为2^(K-1)-1,而由于是完全二叉树,则第K层至少有一个叶子节点,所以有2^(K-1)-1+1

右边部分:为什么又是小于嘞?因为K层的满二叉树节点总数为2^(K)-1,小于等于2^(K)-1是不是等效小于2^(K),因为N是深度为整数呗

所以由上式可以得出结果。

性质5:含n个节点的完全二叉树,对任意节点i,其双亲节点下标为i/2(下取整),左孩子节点下标为2i,右孩子节点下标为2i+1。

二叉树的数据是存储在数组中的,你考虑一下把完全二叉树的数据按层次依次从左到右将数据存储在数组中,下标关系就一目了然了,时间原因我就不画图了,望见谅。

由于时间原因就写到这里,谢谢大家参考和指正,这部分比较简单,由于是自学的东西总结的,所以也许有不对的地方,望见谅。

1 0