数据结构10:树和二叉树

文章目录

简介

前面我们讲到的线性表、队列和栈都是一对一的数据结构,下面我们要讲的树是一种一对多的数据结构----树。

树的严格定义如下:

树:树是n(n=>0)个节点的有限集。 n=0时成为空树。在任意一颗非空树中:(1)有且仅有一个称为根的节点;(2)当n>0时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、T3、Tm,其中每个节点又是一棵树,并且称为根的子树。

树的结构图1所示:

在图1中,A作为树的根节点,它有B和C两个节点;同时B和C也是一颗树,分别有3个和2个节点。

树这种数据结构在实际中有很多的应用,例如文件目录,如图2所示。

二叉树

二叉树是一种特殊的树,它的每个节点上最多只能有两个子节点(简称为左孩子和右孩子),它的结构如3所示。A作为根节点,它的左孩子是B,右孩子是C;同时B和C也都是一棵树,D、E和F、G分别是它们的孩子。二叉树较为简单,并且易于理解,我将它作为重点,进行详细讲解。

二叉树中的术语

结点度 :节点所拥有的孩子的个数成为该节点的度,在二叉树中度的取值只能是0,1,2。图3中A、B、C它们的度为2,D、E、F、G的度为0。
叶节点 :度为0的节点成为叶结点或终端结点。图3中,D、E、F、G都为终端节点。
左孩子、右孩子、双亲 :树中一个结点的子树的根结点称为这个结点的孩子。这个结点称为它孩子结点的双亲。具有同一个双亲的孩子结点互称为兄弟。在图3中,D是B左孩子,E是B的右孩子,B是D和E的双亲,D和E互为兄弟。
结点的层数 :规定树的根结点的层数为1,其余结点的层数等于它的双亲结点的层数加1。在图3中,A的层数为1,B的层数为2,D的层数为3。
树的深度 :树中所有结点的最大层数称为树的深度。图3中的树就是一个深度为3的树。
满二叉树 :在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称作满二叉树。图3中的树就是一棵满二叉树。
完全二叉树 :一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为 i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。完全二叉树的特点是:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。完全二叉树如图4所示。

二叉树的性质

1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。

2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。

3:包含n个结点的二叉树的高度至少为log2(n+1)。

4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。

本节主要介绍了树的和二叉树的基本概念,并对二叉树中的术语和性质进行了简单的介绍。在下一章节中,我们将对二叉树的遍历方式、数据结构和API函数进行介绍。

相关推荐
玉树临风ives34 分钟前
atcoder ABC 453 题解
数据结构·c++·算法·图论·atcoder
琪伦的工具库1 小时前
批量PDF合并工具使用说明:批量合并与直接合并两种模式,拖拽排序/页面范围/遍历子目录/重名自动处理
数据结构·pdf·排序算法
山甫aa1 小时前
哈希集合-----从零开始的数据结构学习
数据结构·算法·哈希算法
say_fall1 小时前
有关算法的简单数学问题
数据结构·c++·算法·职场和发展·蓝桥杯
小杰帅气1 小时前
算法的时间和空间复杂度
数据结构
阿Y加油吧1 小时前
二分查找进阶:旋转排序数组的两道经典题深度解析
数据结构·算法
想带你从多云到转晴1 小时前
05、数据结构与算法---栈与队列
java·数据结构·算法
m0_716765232 小时前
数据结构--顺序表的插入、删除、查找详解
c语言·开发语言·数据结构·c++·学习·算法·visual studio
say_fall2 小时前
滑动窗口算法
数据结构·c++·算法
qq_454245032 小时前
图数据标准化与智能去重框架:设计与实现解析
数据结构·架构·c#·图论