C++ 图 的延展 二叉树(三十九)【第五篇】

今天我们来讲一个新的内容,树!我们呢先来看一看基础介绍(二叉树)

1.树的概念

什么是树?

生活中,树很常见,有各种各样的树。

图片

 

图片

 

图片

从上面几幅图来看,树的构成几乎是一样的:树根、躯干、树叶...

在程序设计中也有这么一种 特殊 的结构:树。

程序中的树跟生活中的树不太一样。

什么是树?

那么程序中的树是什么样呢?

图片

上图中蓝色部分是程序中树的图示,不难发现,它跟实际的树也有一些 相似之处:

画出的绿色部分,像松树的伞帽形状

用带箭头的线连接所有蓝色圆圈,像实际树的树枝、躯干一样。

所以,程序中的树其实是 模仿 生活中的树建立的 特殊程序结构,但它跟实际的树也有一些不同的地方...

树的概念

树的定义:树是一种 数据结构,由 n(n>=0) 个 有限结点 和 一系列结点间关系的边 组成的集合。

当 n = 0 时,称为空树。

对于结点,有一个非常 重要 的概念:

父亲结点 与 孩子结点

父亲结点和孩子结点的关系一般用带箭头的边表示,箭头所指的结点就是一个父亲结点的孩子结点。

图片

上图中它们的关系:

每个父亲结点 至少一个 孩子结点。

每个孩子结点 只有一个 父亲结点。

父亲结点还可称作 双亲结点。

根结点与叶子结点

根据 父亲 与 孩子 的关系,还有一些关系可以被表示:

没有 父亲结点 的结点是 根结点。

没有 孩子结点 的结点是 叶子结点。

一棵非空树中最多有一个根结点,但可以拥有很多个叶子结点。

如下图表示:

图片

程序中的根结点跟现实中的树的根 正好相反,其实可以理解为:程序中的树就是一棵现实中“颠倒”的树。

想一想:当一棵树结点个数为 1 时,有几个根结点和叶子结点呢?

树的性质

由 父亲 和 孩子 的关系还能得到一些关于树的重要信息:

树上 结点个数为 n,边的数量为 
n−1。

树上 任意 两个相邻结点之间 有且仅有 一条边的关系。

相邻:对于两个结点来说,它们有直接的边相连这样的关系叫做相邻。

图片

入度和出度

前面讲到 带箭头的边,它其实还有一种特殊的称谓:入度和出度。

  • 入度:一个结点接受箭头所指边的个数。

  • 出度:一个结点向外指出带箭头边的数量。

图片

对于上图来说,

2 号结点入度为 1,接受一条由 1 号点指向 
2 号点的边;

2 号结点出度为 2,有两条向外指向其他结点的边。

从边的角度看入度出度:

  • 一条带箭头的边会贡献出 一个 入度和出度。

因此,一棵树上所有结点的 入度和 与 出度和 一定是 相等 的。

想一想:一个树上某个结点入度出度 最大 为多少?最小 为多少?

树的深度

树的深度:树中结点的最大层次

补充:树中每个结点可按照父亲与孩子的关系进行分层,像家谱关系一样,父亲结点在孩子结点的上一层。所以每个结点都有 对应的结点深度(所在层数),每棵树的深度就是所有结点中的 最大深度。

图片

如上图中,每个结点对应的结点深度在图中已经标出,那么整棵树的深度应该是 4。

子树

子树:树的其中一个结点以及其下面的所有的结点所构成的树。

图片

如上图所示,以 C 为根结点的子树是结点 
A 的子树。

2.二叉树

二叉树

二叉树是一种特殊的树。

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

图片

由二叉树的定义和简单图示,可得到以下 特点:

每个结点 最多有两棵子树,所以二叉树中不存在度大于 2 的结点。

左子树和右子树是 有顺序的,次序不能任意颠倒。

即使树中某结点 只有一棵子树,也要 区分 它是左子树还是右子树。

二叉树的性质
  • 在二叉树的第 
    i 层上最多有 2的i次方-1 个结点。(i≥1)

  • 二叉树中如果深度为 
    k,那么最多有 2的k次方−1 个结点。(
    k≥1)

图片

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值