数据结构 —— 递归和树
来源:互联网 发布:java和python大数据 编辑:程序博客网 时间:2024/06/05 08:45
概况:
递归和分治
- 递归中用到了分治法。
- 分治法的思想简单概括就是“分而治之”。
- 递归实际使用“栈”来实现的。
- 递归包括递归方程、临界条件:
- EX:实现随机斐波那契数列?汉诺塔?八皇后-->N皇后?
- 时间复杂度:递归时间复杂度是很大的。
So可以用记忆递归法:牺牲空间,换取时间。(办法:放到数组里,数组空间浪费大,但读取快)
Ex:HDU 2041 超级楼梯、HDU 2044 一只小蜜蜂...
- 综上,做递归的题,要先分析,再总结出递归方程。
Ex:HDU 2050 折线分割平面 (标准递归题)
- 二分搜索(大整数的乘法、矩阵乘法(棋盘覆盖))
- 合并排序
- 快速排序
树
- 树的分支最多有2个。又叫孩子数。结点的左孩子,右孩子。
- 度是孩子个数。
- 叶子结点:度为0
- 基本概念:
树:树要么为空,要么由根结点和n(n>=0)棵子树组成
森林:由m(m>=0)棵树组成
结点的度:结点拥有的子树数
树的度:树内各结点度的最大值
叶子:度为零的结点,也称终端结点。
结点的层次:从根开始为第1层,根的孩子为第2层,依此类推。
树的深度:树内结点的最大层次
有序树和无序树:如果将树中结点各子树看成是从左到右有次序的,称之有序,否则无序。
- 树的遍历:
- Huffman树:
一个无序数列,取这个数列中最小的两个数相加,和替代原来数组中原来这两个数,并作为二叉树中一个结点以及结点的两个孩子,不断重复这个过程,直到最后 构成一棵唯一的二叉树。
Ex:HDU 1710、HDU 1053
- 并查集:
由“并”和“查”组成。
- find(); //查。查找某个元素的根(root)元素是谁,返回根元素的值。
- merge(); //并。如果查(find)出的根(root)元素相同,说明有联系,将有联系的元素并到一个集合中。
Ex:HDU 1232 //这道题就是求最后有几个集合,只要求出来了,就做出来了。
Freecode : www.cnblogs.com/yym2013
0 0
- 数据结构 —— 递归和树
- 数据结构——递归
- 数据结构—递归小结
- 数据结构—二叉树练习—递归
- 数据结构——二叉树 前序、中序、后序、递归遍历和非递归遍历
- 数据结构与算法(1)——递归和回溯
- 数据结构学习——递归的概念和程序实现
- 数据结构入门——递归
- 数据结构——递归学习
- 【数据结构】递归算法—汉诺塔
- 数据结构—递归的应用
- 数据结构—树和二叉树-二叉树的递归遍历(DFS)
- 数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
- 数据结构之树和递归算法
- 数据结构-循环和递归
- 数据结构-递归和堆栈
- 数据结构之二叉树遍历(递归和非递归)
- 数据结构-二叉树(包含递归和非递归版本)
- 烟大 Contest1025 - 《挑战编程》第二章:数据结构 Problem A: Jolly Jumpers
- 【资源页】(文章、工具等)
- freopen()——重定向标准输入输出流
- 数据结构 —— 栈和队列
- STL —— STL六大组件
- 数据结构 —— 递归和树
- 杭电 2041 超级楼梯
- 杭电 2044 一只小蜜蜂...
- 杭电 2050 折线分割平面
- 杭电 1018 Big Number
- 烟大 2238: 括号匹配(栈和队列)
- 烟大 2239: 十进制与八进制的转换(栈和队列)
- android 的四种枚举Context.MODE_PRIVATE
- 烟大 2241: 相同序列(栈和队列)