让“树和二叉树”埋在记忆土壤中--性质和概念

Nice to meet your!

目录

树的介绍:

树的创建:

二叉树的概念和结构:

二叉树的存储结构:


树的介绍:

概念和结构:

不知你们是否在现实中看见过分为两个叉的枯树,大概长这样:

那我们数据结构中的二叉树有长什么样呢?它是倒着的结构,仿佛你进入了颠倒的世界,它由许多结点构成,且每个子树的根结点有且只有一个前驱,可以有0个或多个后继,因此树是递归定义的

如下图:

在树型结构中子树是不能交叉的哦

相关名词:

**结点的度:**一个节点含有的子树个数称为该结点的度

**树的度:**最大结点的度称为树的度,如上图树的度为2

**结点的层次:**从根开始算,根为第一层,向下依次计算

**双亲结点/父结点:**有子数的根结点称为双亲结点/父结点

**子结点:**父结点下的结点叫做子结点

**兄弟结点:**具有相同父结点的称为兄弟结点

**叶结点:**度为0的结点,如上图最下面的一排都为叶结点

**树的高度:**一个树的最大层次,如上图树的高度为3

树的创建:

首先我们必然要创建一个结构体,它既要保存值域,还需保存结点和结点的关系,表示的方法有很多,我们使用最常用的孩子兄弟表示法

复制代码
typedef int DataType;
struct Node
{
	struct Node* firstkid;//第一个孩子的结点
	struct Node* Nextbrother;//指向下一个兄弟的结点
	DataType data;//数据域
};

它又是如何访问的呢?我们可以看下面的结构图:

二叉树的概念和结构:

二叉树有一个根节点和两颗左右子树的二叉树组成,子树有左右之分,次序不能颠倒

二叉树可能存在的情况:

特殊的二叉树:

**满二叉树:**每一个结点的层次都达到最大值,如果这个二叉树为k层,那它一共有2^k - 1个结点

**完全二叉树:**对于深度有为K,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树编号为1至N的结点一一对应称之为完全二叉树,满二叉树是一种特殊的完全二叉树

注意: 在完全二叉树中,若树为K,那么K-1层的结点必须是满的,第K层的结点可以不满,但必须是从左至右连续!

性质:

1. 若根结点层数为1,则一颗非空二叉树第i层有**2^(i - 1)**个结点

2. 若根结点层数为1,则深度为h的二叉树最大结点数为2^h - 1

3. 对任何一棵二叉树,如果度为0的叶结点个数为n0,度为2的分支结点个数为n2,则有n0 = n2+1

4. 若规定根结点的层数为1,则具有N个结点的满二叉树的深度h = log2(N+1)。

**5.**对于具有N个结点的完全二叉树,如果按照从上至下、从左至右的数组顺序对所有结点从0开始编号,则对于序号为i的结点:

若 i > 0,则该结点的父结点序号为:( i - 1) / 2;若 i = 0,则无父结点

若2i + 1 < N,则该结点的左孩子序号为:2i + 1;若2i + 1 >= N,则无左孩子

若2i + 2 > N,则该结点的右孩子序号为:2i + 2;若2i + 2 >= N,则无右孩子

二叉树的存储结构:

二叉树有两种存储结构:顺序结构和链式结构

顺序结构:

顺序结构使用数组来存储数据,一般只适合用来表示完全二叉树,二叉树的顺序存储在物理上是一个数组,但在逻辑上是一棵二叉树

链式结构:

二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素之间的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来存储该结点左孩子和右孩子所在的结点的地址

相关推荐
h_a_o777oah7 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO97 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician7 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
垆边人似月.7 小时前
VLAN 资源池(100~200 分档)
数据结构·算法
程序员清风9 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
Logic10112 小时前
C语言/数据结构排序题解:三个数的最大乘积——排序后比较两种候选情况
c语言·数据结构·数组·排序·时间复杂度·算法题·负数处理
殷色玫瑰13 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
写后端的胖头鱼14 小时前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度
多弗朗皮卡丘14 小时前
数据结构番外:环形队列
数据结构·c
50万马克的面包15 小时前
顺序表和链表_精华知识点_CSDN博客
数据结构·链表