[Day12]程序菜鸟自学C++资料结构演算法 – 树Tree

前言:相信大家对於「树」都不陌生,资料结构中的树其实是模拟现实生活中的树干、树枝和叶子,相当於树状结构的资料集,这时的资料已经不像之前的阵列、链结串列一样是线性的资料结构,而是阶层性非线性资料结构
https://ithelp.ithome.com.tw/upload/images/20210926/20140187BJ1oVaSoOC.png

名词介绍:

  • 根节点或树根(Root):位於树状结构的最顶端,上方没有其他节点。例如:A

  • 父节点(Parent)、子节点(Children):若A节点的下方还有B节点,则就可称A节点为B节点的父节点;反之,B节点为A节点的子节点。

  • 叶节点(Leaf):没有子节点的节点称为叶节点。例如:G、H、E、F

  • 祖先节点(Ancenstors):指某节点到跟节点之间所经过的所有节点。例如:G的祖先节点为D、B

  • 非终端节点(Noterminal):除了叶节点之外的其他节点,都可称为非终端节点。例如:A、B、C、D

  • 兄弟节点(Siblings):指有共同的父节点。例如:G和H为兄弟节点

  • 分支度(Degree):指每个节点所拥有的子节点树。例如A的分支度为2

  • 阶层(Level):若树根是一,其子节点是二,则可依序推算出树的阶层树。例如:A的阶层是一,B、C的阶层是二,以此类推。

  • 树深(Depth):又称为树高(Height),指树的最大阶层数。

  • 子树(Subtree):每一个子集合也是一棵树,而这些树称为根节点的子树。

树的定义:树的节点个數是一或多个有限集合,必存在一个根节点且各节点之间不能有回圈产生或不连结的子树

二元树(Binary Tree):

二元树的定义:二元树为资料结构中最广泛运用的树状结构,其特点为树中的每个节点最多只能有两个子节点(分支度<=2)。二元树的节点个數是一个有限集合,或是没有节点的空集合。二元树的节点可以分成兩个没有交集的子树,称为「左子树」(Left Subtree)和「右子树」(Right Subtree)。
https://ithelp.ithome.com.tw/upload/images/20210926/20140187RI9xeW1pfC.png

歪斜树(Skewed Tree):当一颗树只有左边节点或右边节点时,就可以称做歪斜树。
https://ithelp.ithome.com.tw/upload/images/20210926/20140187dT3pl2XmYb.png

完满二元树(Full Binary Tree):如果二元树的树高是h且二元树的节点數是https://ithelp.ithome.com.tw/upload/images/20210926/20140187n1gqWTf3U1.png ,满足此条件的树则可称为完满二元树。
https://ithelp.ithome.com.tw/upload/images/20210926/2014018785YRxR3MwJ.png

完整二元树(Complete binary tree):如果二元树的深度为h,所含的节点數小於 ,但其节点的编号方式如同深度为https://ithelp.ithome.com.tw/upload/images/20210926/20140187n1gqWTf3U1.png的完满二元树一般,从左到右,由上到下的顺序一一对应结合,则可称为完整二元树。
https://ithelp.ithome.com.tw/upload/images/20210926/20140187AwgLRcB4eI.png

严格二元树:二元树的每个非终端节点均有非空的左右子树,则可称为严格二元树。
https://ithelp.ithome.com.tw/upload/images/20210926/20140187YUPfDl1ITg.png

本日小结:今天介绍了树状结构和二元树,这次虽然没有实作但却有大量的名词解释,先把树状结构的名词记熟再学习二元树会比较轻松喔!二元树虽然很多中类很复杂,但本质上就算是一种二分法,在生活中我们常常面临许多选择,当决策的方式越来越少,事情也就看似简单了一点,明天就要开始实作二元树的处存方式o(^∀^*)o


<<:  [Day25]C# 鸡础观念- 共产主义者~静态成员

>>:  Day 12 -资料查询语言 BETWEEN !

【在厨房想30天的演算法】Day 26 资讯安全与演算法 : 混成金钥密码系统

Aloha!又是我少女人妻 Uerica!我家狗狗每次做了什麽让我崩溃的事,只要泪眼汪汪的看着我,我...

LeetCode解题 Day16

54. Spiral Matrix https://leetcode.com/problems/sp...

[Day4] 时间序列预测界的 OG:白话解释 ARIMA 组成模型及步骤

(努力更新、连载中) 前一篇我们盘点、简述了所要介绍的时间序列预测统计模型, 第四篇我们要重点认识统...

【Day 27】Cmd 指令很乱,主办单位要不要管一下 (上) - Cmd 指令混淆

环境 Windows 10 21H1 System Monitor v13.01 前情提要 在【Da...

17.移转 Aras PLM大小事-用Excel复制料号去查询

我想看标题一定会困惑这是什麽 先解释一下使用者最常用Excel作报表 然後想复制之後快速查询特定料号...