7.24数据结构

笔记

数和图

一.树形结构相关概念

1>树形结构:表示数据元素之间存在一对多的关系

2>树:是由一个根节点多个子树构成的树形结构

3>节点:就是树中的数据元素

4>父亲节点:当前节点的直接上级节点

5>孩子节点:当前节点的直接下架节点

6>祖先节点:当前节点的直接或间接上级节点

7>子孙节点:当前节点的直接或间接下级节点

8>兄弟节点:拥有相同父节点的所有节点互称为兄弟节点

9>堂兄弟节点:其父节点在同一层的所有节点,互为堂兄弟节点

10>根节点:没有父节点的节点

11>叶子节点:没有子节点的节点称为叶子节点

12>分支节点:节点的度不为0的节点叫分支节点

13>节点的度:就是当前节点的孩子节点个数,就称为节点的度

14>树的度:就是树中节点的度的最大值

15>节点的层次:从根节点开始到当前节点所经历的层数称为该节点的层次

16>树的层次:输出节点的层次的最大值

二.二叉树

2.1二叉树的相关概念

1>二叉树:由根节点和最多两个子树组成,并且严格区分左右子树的树形结构

2>左子树:由当前节点的左孩子节点为跟节点构成的二叉树

3>右子树:由当前节点的右孩子节点为根节点构成的二叉树

4>满二叉树:二叉树的最后一层全是叶子节点,在没有添加层数的条件下,不能在向该树中增加节点的树

(除了最后一层为叶子节点外,其余层中的节点的度全为2)

5>完全二叉树:在一棵满二叉树的基础上,最后一层自右向左逐渐减少节点的二叉树

2.2二叉树的状态

一共有五种:空二叉树、只有根节点和左孩子、只有根节点和右孩子、全都有

2.3二叉树的性质

1>在二叉树的第i层上最多有2^(i-1)个节点

2>在二叉树的前n层最多有2^n-1个节点

3>在二叉树中,叶子节点的个数,总比度为2的节点个数多1

4>在二叉树上,如果第i个节点存在左孩子,那么其左孩子一定是第2*i个节点,如果存在右孩子,那么一定是第2*i+1个节点

2.4二叉树的存储

1>顺序存储

对于普通的二叉树而言,如果使用顺序存储,会浪费大量的存储空间,因为需要给没有节点的位置留出空间,以便于后期的插入

顺序存储,一般用于存储完全二叉树,不适合存储普通二叉树

2>链式存储

结构:

struct Node

{

datatype data;

struct Node*left_child;

struct Node*right_child;

};

相关推荐
奶油话梅糖11 小时前
打开项目 0.9 秒、内存只有 IDEA 的 1/12:OpenIDEA 用 Rust 把 IntelliJ IDEA 重造了一遍
java·rust·github·intellij-idea
vipxieliang11 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
Rain的Java大神之路11 小时前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
golang学习记11 小时前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发
天天被压力12 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥12 小时前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力12 小时前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
apcipot_rain12 小时前
C++转Java日记(02)
java·开发语言·c++
nice_lcj52012 小时前
【从零理解 Spring AI · 03】Spring AI 在 Spring 生态里的位置
java·spring boot·大模型·spring ai·ai应用开发
码农小河661 天前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库