(九)数据结构-二叉树

本文详细介绍了二叉树的概念,包括其定义、与度为2的有序树的区别,以及特殊类型的二叉树如满二叉树、完全二叉树和二叉排序树。此外,还探讨了二叉树的性质,如非空二叉树的叶节点数与度为2的节点数的关系,以及二叉树的存储结构,如顺序存储和链式存储,并分析了它们的优缺点。
摘要由CSDN通过智能技术生成

一、二叉树的概念

1.1二叉树的定义

二叉树另一种树形结构,他的特点是每个节点只有两颗子树(即不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。

1.2二叉树与度为2的有序树的区别

  1. 度为2的树至少有3个结点,而二叉树可以为空
  2. 度为2的有序树的孩子的左右次序是相对另一个孩子而言的
    若某个结点只有一个孩子,则这个孩子就无须区分左右次序
    而二叉树无论其孩子数是否为2都是需要确定其左右次序,即二叉树的左右次序不是相对另一结点而言,而是确定的

1.3特殊的二叉树

1.3.1满二叉树

定义:一个高度为h,且含有2的h次方-1结点的二叉树,称为满二叉树
性质:

  1. 树的每一层都含有最多的结点
  2. 满二叉树的叶子结点都集中在二叉树的最下一层
  3. 除叶子结点之外的每个节点度数均为2
1.3.2完全二叉树

定义:高度为h,有n个节点的二叉树,当且仅当其每个节点都与高度为h的满二叉树中的编号为1~n的结点一一对应时候,成为完全二叉树(在满二叉树的基础上去掉若干个编号更大的结点)
在这里插入图片描述

1.3.3二叉排序树

左子树上所有结点的关键字均小于根结点的关键字,右子树上的所有节点的关键字均大于根结点的关键字,左子树和右子树又各是一颗二叉排序树
在这里插入图片描述

1.3.4平衡排序树

树上任一结点的左子树和右子树的深度之差不超过1

在这里插入图片描述

二、二叉树的性质

在这里插入图片描述

性质1:前提:非空二叉树,叶子节点数等于度为2的结点数+1

在这里插入图片描述

性质2:前提:非空二叉树,第k层上至多又2的k次方-1个节点在这里插入图片描述

性质3:高度为h的二叉树至多又2的h次方-1个节点(最多节点的情况刚好是一颗满二叉树)

在这里插入图片描述

性质4:具有n个(n>0)的结点的完全二叉树的高度

在这里插入图片描述
在这里插入图片描述

性质五:对于完全二叉树,可以由结点数n推出度为0、1、2的结点数

完全二叉树度为1的结点只能是0或1

完全二叉树度为0➕度为2一定是奇数

(因为度为0=度为2加1)
(所以度为0+度为2 等于 2倍的度为2+1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、二叉树的存储结构

3.1顺序存储

顺序存储:适合完全二叉树和满二叉树,树中结点序号可以唯一反应结点之间的逻辑关系,这样既能最大可能地节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系

最坏情况:一个高度为h且只有h个结点的单支树需要占据近2的h次方-1个存储单元

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2链式存储

由于顺序存储的空间利用率较低,因此二叉树一般采用链式存储结构,用链表结点来存储二叉树中的每个结点。
在二叉树中,结点结构通常包括若干数据域和若干指针域
(二叉链表至少包括3个域:左指针域、左指针域、数据域)

在含有n个结点的二叉链表中,含有n+1空链域

解释:一个二叉树有n个结点,总共有2n个指针域,
除根结点以外,其它每一个结点头上都会有连有指针,所以有n-1个结点
因此2n个指针域中会有n+1个指针是指向null的

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值