《算法和数据结构》算法篇

一:二叉树

  1. 1 定义

(1)定义

树是一种非线性的数据结构,它是由n个有限节点组成有层次关系的集合

(2)基本术语

父子节点:每个节点下方直接相连的节点称为子节点,上方直接相连的节点称为父节点

子树:以子节点为根的树称为子树

根节点和叶子节点:最上方没有父节点的节点为根节点,最下层没有子节点的节点为叶子节点

1.2 存储与定义

(1)顺序存储

二叉树根据层序进行编号后,存放到一位数组中。明显缺点(没法反应二叉树的逻辑关系【不知道节点的左右节点】)

只用于完全二叉树,防止左斜(没有字节点,全在左边或右边)

(2)链式存储

每个节点包括一个数据域,两个指针域

1.3 遍历

(1)定义

(2)先序遍历

(3)中序遍历

(4)后序遍历

(5)层序遍历

按照层次,从左到右依次访问二叉树中的每个节点

1.4 递归遍历

总结

(1)代码模板

解释

(2)类比数组遍历

数组遍历一般通过一个for循环实现,遍历顺序是从前往后

(3)遍历节点顺序

遍历节点顺序仅取决与左右子节点的递归调用顺序,与其它代码无关

1.5 前中后序遍历

(1)定义

在二叉树遍历框架前面加了一套代码

(2)解释

相关推荐
Fuyo_111915 分钟前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
jktantan35 分钟前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
揽星河..1 小时前
【C语言】猜数字游戏
c语言·算法·游戏
LabVIEW开发1 小时前
CTM-3 红外测温仪 + LabVIEW 温度怎么测?
算法·labview·测试·labview程序
纪念 2292 小时前
C++算法(六)
开发语言·c++·算法
Dumbness3 小时前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
taka3 小时前
从 24x 到 141x:我用纯 Python 零依赖项目,扒开了 GPU 加速的性能黑洞
算法
UIU1143 小时前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
旖旎夜光3 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
像风一样自由20204 小时前
2.如何用FastAPI把一个Python算法封装成HTTP服务
python·算法·fastapi