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

一:二叉树

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

相关推荐
我带你来这儿就是为了告诉你我3 分钟前
C++23新特性前瞻
开发语言·c++·算法
陌夏7 分钟前
快速排序 (Quick Sort)
算法
罗超驿8 分钟前
Java数据结构_栈_算法题
java·数据结构·
IronMurphy17 分钟前
【算法二十九】 437. 路径总和 III
算法·深度优先
2501_9083298518 分钟前
C++安全编程指南
开发语言·c++·算法
计算机安禾21 分钟前
【C语言程序设计】第39篇:预处理器与宏定义
c语言·开发语言·c++·vscode·算法·visual studio code·visual studio
m0_5698814732 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
笒鬼鬼33 分钟前
【API接口】最新可用红果短剧接口
算法·api·笒鬼鬼·红果短剧·接口源码
weixin_4219226934 分钟前
C++与边缘计算
开发语言·c++·算法
2401_8319207437 分钟前
C++编译期数组操作
开发语言·c++·算法