
数据结构与算法
文章平均质量分 52
亨利何
Slow Walker, But Not SLOW.
展开
-
Python实现二叉树及其4种遍历
Python & BinaryTree 1. BinaryTree (二叉树) 二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 二叉树的第i层至多有2^{i-1}个结点 深度为原创 2016-09-04 18:39:47 · 9598 阅读 · 2 评论 -
二叉树梳理
本篇文章主要涉及到 二叉树的非递归遍历(ForwardTravesal()/MiddleTravesal()) 二叉树的深度: DepthOfTree() 二叉树的叶子节点个数: CountsOfLeaves() 二叉树的非递归需要借助栈,原因在于递归遍历思想是基于栈的,现在要变为非递归,需要借助额外空间,空间换时间。 关于二叉树的递归遍历(Recur原创 2017-04-07 08:53:55 · 557 阅读 · 0 评论 -
"Hanno Tower"-汉诺塔递归解决Review
最近的算法课老师在讲到“D & R”时,提到“递归(Recursive)”,再次听到这个词,脑海中复现的第一画面就是“三座塔”即经典的汉诺塔问题,本文就该问题的递归思想进行总结。 汉诺塔问题: 有三座塔台“A, B, C”,在塔A上有若干个盘子,盘子由上至下依次从小到大叠在一起,现在需要采用最少的移动步骤,将所有盘子从塔A移动到塔C,重点是必须保持盘子的大小顺序(从上到下依次从小到大) 递归思原创 2017-09-14 23:12:59 · 1081 阅读 · 0 评论 -
Java Collection Framework 中List 和 Map遍历总结
Java中在编写代码时一定会涉及到相应数据结构的遍历问题,本文着重Collection框架中的Map和List的遍历 采用三种方法,根据需求采用即可原创 2017-09-13 08:58:14 · 645 阅读 · 0 评论 -
动态规划(DP)-装配线调度问题
前言:动态规划的概念 动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。分治算法是指将问题划分为一些独立的子问题,递归的求解各个问题,然后合并子问题的解而得到原问题的解。例如归并排序,快速排序都是采用分治算法思想。而动态规划与此不同,适用于子问题不是独立的情况,也就是说各个子问题包含有公共的子问题。如在这种情况下,用分治算法则会重复做不必要的工作。采用动态规划转载 2017-10-31 22:10:08 · 4131 阅读 · 1 评论 -
Java实现-Huffman编码与解码
编码 1 从森林中选取2颗子树进行合并,将生成的新树重新插入森林2 重复1,直到森林中只有一棵树 所有的待编码节点成为了这棵树的叶子结点,频度越高越靠近树根 解码同样采用树形结构进行解码(所有叶子存储数据,路径即编码) 如果码值是0则向左子树寻找;是1则向右子树寻找,直到找到叶子结点Code ->package src;import java.util.ArrayList;i原创 2017-11-13 16:25:18 · 1260 阅读 · 0 评论