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

一:二叉树

  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)解释

相关推荐
wen__xvn17 分钟前
DFS:从入门到进阶的刷题指南
算法·深度优先
xiaohanbao0932 分钟前
day40 python图像数据与显存
python·深度学习·学习·算法·机器学习·图像
wen__xvn41 分钟前
每日刷题c++
数据结构·c++·算法
橙留香mostarrain1 小时前
从零开始的数据结构教程(六) 贪心算法
数据结构·算法·贪心算法
努力敲代码的小慧1 小时前
哈夫曼编码
数据结构
点云SLAM1 小时前
PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
人工智能·pytorch·python·算法·计算机视觉·dataloader·3d深度学习
思绪漂移2 小时前
同源“平滑思想”的问题解法:正则化与拉普拉斯平滑
人工智能·算法
想睡hhh2 小时前
Practice 2025.5.29 —— 二叉树进阶面试题(1)
c++·算法
vvilkim2 小时前
C# 数组与字符串:全面解析与应用实践
开发语言·算法·c#
Ashlee_code2 小时前
TRS收益互换平台开发实践:从需求分析到系统实现
java·数据结构·c++·python·架构·php·需求分析