继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

C语言数据结构(12)--二叉树的概念和性质

程序员大阳
关注TA
已关注
手记 357
粉丝 1.5万
获赞 1523

何为二叉树

二叉树,英文名Binary Tree,顾名思义,二叉树就是每个节点最多有2个子节点的树,这个说法好理解,但是不够严谨。具体的说:

  1. 二叉树节点是有限个,无限对于计算机来说处理不了。
  2. 二叉树可以由0个节点,这种属于空二叉树。
  3. 二叉树如果有超过0个节点,则必有根节点,而且根节点最多有两个子节点,且子节点为根节点的子树也为二叉树。

注意二叉树的左右子树,是有顺序的,不能互相调换,下图为经典的二叉树。

图片描述

特殊二叉树

二叉树是数据结构中非常重要的一种,可以说是鼎鼎大名,而且延伸出了许多特殊的二叉树,此处先了解下他们的情况。

斜树

顾名思义来,所有节点都往一边倾斜的二叉树叫做斜树,都往左倾斜即为左斜树,都往右倾斜即为右斜树,如下图。
图片描述

满二叉树

什么叫满啊,英文是full,充满、满溢、不缺少的意思,也就是说所有分支节点都有左右子树,且所有叶子都在同一层,称为满二叉树。

在同样深度的二叉树中,满二叉树的节点个数最多,叶子数也最多,所以称之为满绝对不是浪得虚名。如下图为满二叉树:
图片描述

完全二叉树

刚刚说完了有个满二叉树,好像这次的新概念完全二叉树,应该差不多啊。完全二叉树更多的是数学上的一种完全,表示从小到大一个不缺,叫做“完全”。

具体到二叉树上,完全二叉树是指按层序编号,如果是从第一个节点到最后一个节点都是依次排下来的,那么这颗二叉树即为完全二叉树,如下图,第三张没有按照应有顺序依次排下来,所以不是完全二叉树。

图片描述

二叉树的性质

性质是从概念观察、思考得来,我们此处总结归纳一些有用的性质:

性质1:二叉树的第n层,最多有2^(n-1)个节点

n=1,第一层,最多1个节点,2^(1-1)=1
n=2,第二层,最多2个节点,2^(2-1)=2
n=3,第三次,最多4个节点,2^(3-1)=4

性质2:深度为n的二叉树,最多有2^n-1个节点

第一层最多有:2^0
第二层最多有:2^1
第三层最多有:2^2
所以深度为n的二叉树,最多有:2^0 + 2^1 + 2^2+...+2^(n-1)个节点,根据等比数列的求和公式,即为2^n-1个。

性质3:如果二叉树叶子节点数为a,度为2的节点数为c,则a=c+1

二叉树中,叶子节点度为0,除了叶子节点还有度为1的节点和度为2的节点,设总节点数为n,度为1的节点数为b,则

式子1
n=a+b+c

观察二叉树能发现,除了根节点的上头没有一个连接线,其他节点都有,如下图,所以连接线的数量为n-1。

图片描述

从另一个角度出发,连接线的数量为度数,即为b+2c,所以有:

式子2:
n-1=b+2c

将式子1带入式子2,得出:a=c+1,简单的数学题嘛。

还有一些性质,论证起来比较复杂,此处暂且不表了。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP