《算法和数据结构》算法篇
一:二叉树
- 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)解释