数据结构 (c语言版)(5.2二叉树)

1.二叉树的定义
二叉树(Binary Tree)是n个结点的有限集合,该集合或者为空、或者由一个称为根(Root)的结点及两个不相交的、被分别称为根结点的左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。
二叉树的五种基本形态:
在这里插入图片描述

2.二叉树的相关概念
(1)满二叉树
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称为满二叉树。
如图(a)就是一棵满二叉树,(b)则不是满二叉树,因为,虽然其所有结点要么是含有左右子树的分支结点,要么是叶子结点,但由于其叶子结点未在同一层上,故不是满二叉树。
在这里插入图片描述
(2)完全二叉树
一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
完全二叉树的特点是:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。图(a)为一棵完全二叉树,而图(b)和图(b)都不是完全二叉树。

在这里插入图片描述
3.二叉树的主要性质
性质1 一棵非空二叉树的第i层上最多有2i-1个结点(i≥1)
性质2 一棵深度为k的二叉树中,最多具有2k-1个结点。]
性质3 对于一棵非空的二叉树,如果叶子结点数为n0,度数为2的结点数为n2,则有:n0=n2+1。

4.二叉树的存储结构与基本操作
(1)顺序存储结构在这里插入图片描述
在这里插入图片描述
(2)链式存储结构
在这里插入图片描述
在这里插入图片描述

5.二叉树的基本操作
二叉树的基本操作通常有以下几种。
(1)Initiate(bt):建立一棵空二叉树。
(2)Create(x, lbt, rbt):生成一棵以x为根结点的数据域信息,以二叉树lbt和rbt为左子树和右子树的二叉树。
(3)InsertL(bt, x, parent):将数据域信息为x的结点插入到二叉树bt中作为结点parent的左孩子结点。如果结点parent原来有左孩子结点,则将结点parent原来的左孩子结点作为结点x的左孩子结点。
(4)InsertR(bt, x, parent):将数据域信息为x的结点插入到二叉树bt中作为结点parent的右孩子结点。如果结点parent原来有右孩子结点,则将结点parent原来的右孩子结点作为结点x的右孩子结点。
(5)DeleteL(bt, parent):在二叉树bt中删除结点parent的左子树。
(6)DeleteR(bt, parent):在二叉树bt中删除结点parent的右子树。
(7)Search(bt, x):在二叉树bt中查找数据元素x。
(8)Traverse(bt):按某种方式遍历二叉树bt中的全部结点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值