链表和二叉树
来源:互联网 发布:算法 书籍 豆瓣评分 编辑:程序博客网 时间:2024/06/04 18:12
~~~~~~~
1) 基本特征:内存中不连续的节点序列,节点之间通过next指针彼此相连;
每个节点的next指针都指向下一个节点,最后一个节点的next指针为NULL。
2) 基本操作:插入、删除、遍历。3) 实现要点
追加:将新分配节点的地址赋给原链表最后一个节点的next指针。
插入:将前节点中存储的后节点地址赋给新节点的next指针,将新节点的地址赋给前节点的next指针。
删除:将前节点的next指针赋值为待删除节点的next指针。对于单向链表而言,寻找前节点会有一定开销。
遍历:沿着next指针依次访问链表中的各个节点。
伪随机访问:遍历+计数。
(1)单向链表
只能向后走
(2)双向链表
既可以向前走,又可以向后走。
******************************************************************************************************************
如果单向线性链表里,每个节点可以向后找到多个其他节点,这也是一个数据结构,这个数据结构叫树
可以把树里的所有节点分成几层,不同层之间有方向,这些方向都是一致的
树最上面一层应该只有一个节点,这个节点叫做根节点
根节点可以代表整棵树
树里存在直接联系的两个节点之间有父子关系,靠近根节点的是父节点,远离根节点的是子节点
任何节点最多只能有一个父节点(根节点没有父节点)
如果一个树里任何节点最多只能有两个子节点,这种树叫做二叉树
二叉树是最简单的树
二叉树里用左右区分任何一个节点的两个子节点
二叉树里任何一个节点和他下面的所有节点都可以看作的是一个新的二叉树
节点A的左子节点代表的树叫做节点A的左子树,右子节点代表的树叫做右子树。
树中的大多数操作都是通过遍历来实现的,树的遍历大多都是通过递归来实现的。(问题能分解,分解后的小问题可以用该方法解决,一般采用递归)
在遍历树的时候左子树一定在右子树前被处理,一共有三种方式遍历树:
(1)最开始处理根节点的遍历方式,叫做前序遍历 处理节点自己的数据->处理左节点->处理右节点。
(2)中间处理根节点的遍历方式,叫做中序遍历 处理左节点->处理节点自己的数据->处理右节点。
(3)最后处理根节点的遍历方式,叫做后序遍历 处理左节点->处理右节点->处理节点自己的数据。
为何一般只研究二叉树呢?
因为任何树都可以转化为二叉树
- 链表和二叉树
- 链表和二叉树
- 二叉树的简单介绍和二叉树的二叉链表存储表示
- 二叉树、二叉链表
- 二叉树:二叉链表
- 二叉搜索树和双向链表
- 二叉搜索树和双向链表
- 二叉搜索树和双向链表
- 搜索二叉树和双向链表
- 二叉树,线索二叉树,二叉链表
- 数据结构--二叉树--获得二叉树的深度和根(链表结构)
- 算法之 有序链表和平衡二叉树 有序数组与平衡二叉树
- 实验6:树和二叉树的实验2 二叉链表
- 由先序遍历和中序遍历构造二叉树的二叉链表代码
- 二叉树的二叉链表表示和实现
- 二叉树(二叉链表实现)
- 二叉树的二叉链表创建
- 二叉链表生成二叉树
- CSDN博客去图片水印
- mymemcpy的实现
- meta标签 搜索引擎优化 SEO
- nyoj 667 Biggest Number 搜索 减枝 dfs bfs
- linux sed 命令用法
- 链表和二叉树
- 趣味分数-辗转相除 (欧几里德算法) 递归算法 求最大公约数-java
- 利用Poi导出Excel
- 隐式转换
- IIS创建 以及设置
- Spring的事务管理总结
- 定义函数
- 欢迎使用CSDN-markdown编辑器
- 视频格式转换方法之264、avi、YUV420P