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

一:二叉树

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

相关推荐
电院工程师8 分钟前
SM3算法C语言实现(无第三方库,带测试)
c语言·算法·安全·密码学
Hello.Reader1 小时前
RediSearch 查询语法速览
前端·算法
generallizhong1 小时前
android 省市区联动选择
android·java·算法
YGGP3 小时前
LeetCode 662. 二叉树的最大宽度
算法
周圣贤5 小时前
九尾狐编程语言新算法“超维时空演算体”
开发语言·算法
随缘而动,随遇而安6 小时前
第八十二篇 大数据开发基础:树形数据结构深度解析与实战指南(附创新生活案例)
大数据·开发语言·数据结构
药9558 小时前
数据结构 4 (栈和队列)
java·开发语言·数据结构
军训猫猫头8 小时前
100.Complex[]同时储存实数和虚数两组double的数组 C#例子
算法·c#·信号处理
2401_858286119 小时前
CD45.【C++ Dev】STL库的list的使用
开发语言·数据结构·c++·list
int型码农9 小时前
数据结构第八章(五)-外部排序和败者树
c语言·数据结构·算法·排序算法