二叉树 - 定义及数学性质

来源:互联网 发布:网络语除草是什么意思 编辑:程序博客网 时间:2024/05/29 19:40

定义

满二叉树:每个内节点都有两个孩子。

完全二叉树:除了最后一层叶子外的二叉树是满二叉树,最后一层叶子都连续地集中在最左边。

平衡二叉树:树的两个子树的高度差不超过1。

赫夫曼树:带路径权值的树,权值越高的越靠近根。

高度:高度不包括根结点,及如果根结点无左右子树,则高度为0。


数学性质

性质一:高度为h的二叉树至多有2h个叶子结点

证明略。

性质二:高度为h≥0的二叉树至少有h+1个结点

如果要使高度为定值的二叉树的结点数最少,则该二叉树的每个结点只有一个子树,即每层只有一个结点,共h个,再加上根结点,共h+1个,所以至少有h+1个结点。

性质三:高度不超过h(≥0)的二叉树至多有2h+1-1个结点

证明:

满二叉树结点最多,所以证明满二叉树是否满足该性质。

当h=0时,只有根结点,即结点数为1;

假设h=k时,点数为2k+1-1;

则当h=k+1时,由于比高度为k的二叉树多了一层叶子,根据性质一,第k+1层最多有个2k+1叶子,所以共有2k+1+2k+1-1=2(k+1)+1-1个结点;

证毕。

性质四:含有n≥1个结点的二叉树的高度至多为n-1

由性质二可得出。

性质五:含有n≥1个结点的二叉树的高度至少为logn,因此其高度为Ω(logn)

根据性质三可得出。


满二叉树

性质一:高度为h的满二叉树,共有2h+1-1个结点

证明:

结点共有1+2+4+...+22h+1-1

性质二:共有2h个叶子

性质三:共有2h-1个内结点,内结点个数比叶子少1

证明略。


完全二叉树

完全二叉树是一个比较特殊的二叉树,有着很多性质。

我们从树根起,自上层到下层,逐层从左到右给二叉树的所有结点编号,编号从1开始,即根结点编号为1。

性质一:第h层的从左到右第k个结点的编号为2h+k-1

该完全二叉树是由高为h-1的满二叉树和第h层的k个叶子组成,h-1的满二叉树共有2h-1个结点,所以,h层第k个结点的编号为2h+k-1。

性质二:叶子个数或者和内结点个数相等或者多1

高度为h的完全二叉树是由高度为h-1的满二叉树和k个叶子组成,由满二叉树的性质得出,叶子数比内结点多1。

我们通过给高为h-1的满二叉树增加叶子来得到完全二叉树,当我们给左边第一个叶子增加1个结点时,该叶子变为了内结点,而增加的结点是叶子,可以得出,叶子数没变,而内结点数增加了一个,此时,内结点数和叶子数一样;再增加一个结点,可以得出,叶子数增加了一个,而内结点数不变,所以此时,叶子数比内结点数多1。按照同样的步骤依次将剩余的叶子添加后,该性质是不变的。

性质三:通过本结点的编号可以快速得到父结点、左右孩子的编号

int parent(int i){

return i>>1;//i/2

}

int left(int i){

return i<<1;//i*2

}

int right(int i){

return (i<<1) + 1;//i*2+1

}




原创粉丝点击