数据结构—树和二叉树

二叉树

定义

二叉树是n(n≥0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。

特点:
每个节点最多有两棵子树;
二叉树是有序的,其次序不能任意颠倒

特殊二叉树

斜树
1.所有节点都只有左子树的二叉树称为左斜树;
2.所有节点都只有右子树的二叉树称为右斜树;
3.左斜树和右斜树统称为斜树。
4.在斜树中,每一层只有一个节点;
5.斜树的节点个数与其深度相同。

满二叉树
介绍:
在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子都在同一层上。

特点:
1.叶子只能出现在最下一层。
2.只有度为0和度为2的节点
3.满二叉树在同样深度的二叉树中节点个数最多。
4.满二叉树在同样深度的二叉树中叶子节点个数最多。

完全二叉树
定义:
对一棵具有n个节点的二叉树按层序编号,如果编号为i(1≤i≤n)的节点与同样深度的满二叉树中编号为i的节点在二叉树中的位置完全相同。

简单来讲就是k层的完全二叉树前k-1层和k-1层的满二叉树一样,在第k层自左端数起,叶子节点都是连续的。
或者说在满二叉树中,从最后一个节点开始,连续去掉任意个节点,即是一棵完全二叉树。

特点:
1.叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树的左部。
2.完全二叉树中如果有度为1的节点,只可能有一个,且该节点只有左孩子。
3.深度为k的完全二叉树在k-1层上一定是满二叉树。

基本性质
1.二叉树的第 i 层上最多有2i-1个节点(i≥1)
2.一棵深度为k的二叉树中,最多有2k-1个节点,最少有k个节点。
3.深度为k且具有2k-1个节点的二叉树一定是满二叉树
4.深度为k且具有k个节点的二叉树不一定是斜树。(可能左右交错)
5.在一棵二叉树中,如果叶子节点数为n0,度为2的节点数为n2,则有: n0=n2+1。 (简单证明如下:
1.二叉树总节点数 =度为0的节点数+度为1的节点数+度为2的节点数
2.除根节点之外每个节点均有一个入度,而入度来自于度数不为零的节点的贡献(总节点数-1 == 度为1的节点数+2度为2的节点数)
3.1和2联立消去度数为1的节点数以及总节点数即可
6.具有n个节点的完全二叉树的深度为[log2n]+1 ([ ]表示向下取整)
7.若将n个节点的完全二叉树从1开始层序标号,则有如下性质:
1.根节点标号为1.
2.节点 i(i>1) 的双亲节点是i/2,根节点无双亲节点
3.节点 i 的左儿子标号为 2
i,右儿子为 2*i+1 ,若左(右)儿子标号超过n,则无左(右)儿子

二叉树的顺序存储结构

二叉树的顺序存储结构就是用一维数组存储二叉树中的节点,并且节点的存储位置(下标)应能体现节点之间的逻辑关系——父子关系。

普通二叉树需按照完全二叉树的编号方式编号,然后以完全二叉树的形式存储到一维数组中,造成很多浪费,故二叉树的顺序存储结构一般仅存储完全二叉树.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值