数据结构学习(八)二叉树

二叉树学习:

1.概念

一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。
二叉树的特点:

  1. 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。
  2. 二叉树的子树有左右之分,其子树的次序不能颠倒。

2.数据结构中的二叉树

在这里插入图片描述

3.特殊二叉树

3.1完全二叉树

若堆的深度【层数】为h,除了最后一层,其上各层 (1~h-1) 的结点数都达到最大个数,并且最后一层所有的结点都连续集中在最左边,这就是完全二叉树。

在这里插入图片描述
3.2堆

堆是利用完全二叉树的结构来维护的一组数据。它的实现如下

 在这里插入图片描述


3.3满二叉树

full binary tree 满二叉树:二叉树除了叶结点外所有节点都有两个子节点。
对于满二叉树而言,叶子的个数等于内部结点(非叶结点)+1,写作 L = l + 1

在这里插入图片描述

 

在这里插入图片描述

3.4完全二叉树与满二叉树的区别

满二叉树分为:full binary tree 和 perfect binary tree
full binary tree

 在这里插入图片描述

 

 perfect binary tree

在这里插入图片描述
3.5满二叉树不一定是完全二叉树

 下面这个二叉树只是full binary tree,所以它不是完全二叉树。

 在这里插入图片描述

 

 

3.6完全二叉树也不一定是满二叉树

在这里插入图片描述
3.7既是满二叉树也是完全二叉树的树

 只有 perfect binary tree才既是满二叉树也是完全二叉树

 在这里插入图片描述

4.二叉树的存储结构

二叉树一般可以使用两种存储结构,一种顺序结构,一种链式结构。

4.1顺序存储结构

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。
在这里插入图片描述

 4.2链式存储结构

二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分为二叉链和三叉链,当前我们学习中一般都是二叉链,后面课程学到高阶数据结构如红黑树等会用到三叉链。

在这里插入图片描述

 在这里插入图片描述

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值