数据结构与算法
文章平均质量分 53
九十三大人
不要停止学习,不要停止思考
展开
-
java实现二叉查找数迭代
题目描述Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST. 实现一个适用于二叉查找树的迭代器,该迭代器通过二叉查找树的根结点来实例化。Calling next() will return the next ...转载 2018-04-23 14:59:27 · 196 阅读 · 0 评论 -
java实现单链表(最清晰)
本文主要内容:1、单链表理解的最痛点2、单链表编写的最痛点3、单链表实现代码1、单链表理解的最痛点所谓的临时节点,又有人称为可以移动的节点。其实这些名字都不形象也不利于让别人理解。 我们以在链表中添加元素为例子来理解,如下代码:(并不是真正链表,用来实验) 方案一:class Solution { public static void main(String[...原创 2018-03-28 15:58:12 · 29363 阅读 · 13 评论 -
java实现二叉查找树
package com.algorithm;import java.util.Comparator;import java.util.Iterator;import java.util.Stack;/** * 功能简述<p>: * 功能详述: * * author:wangzha */public class BinarySearchTree<T>...原创 2018-04-23 23:33:56 · 189 阅读 · 0 评论 -
分治算法
分治算法:快速排序,归并排序,汉诺塔问题,傅立叶变换,包括动态规划,贪心算法都有运用到分治思想。分治策略是: 对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。1、将问题的规模变小,变成若干个子问题...转载 2018-04-24 11:35:19 · 144 阅读 · 0 评论 -
树和堆的一些概念
对于大量的输入数据,链表的线性访问时间太慢。树是一种简单的数据结构,其大部分操作的运行时间平均为O(logN)。二叉查找树是TreeSet和TreeMap实现的基础。树可以用几种方式定义。一种方式是递归,一棵树是一些节点的集合。这个集合可以是空集,若不是空集,则树由称作根的节点root已经0个或多个非空子树组成。一棵树是N个节点和 N-1条边的集合。 二叉树:其中每个节点都不能有多于两个的...原创 2018-04-24 16:58:49 · 1431 阅读 · 0 评论 -
java实现汉诺塔
转载自:http://blog.csdn.net/ljmingcom304/article/details/50296939 存在A、B、C大小形同的3根石柱,其中A石柱从下往上按照大小顺序依次摆放着n个盘子,现在需要将A石柱的盘子全部移动到C石柱上,并且每次只能移动一个圆盘,小圆盘不能放在大圆盘上,请问该如何移动? 算法分析: 当n=1时,也就是刚开始A石柱上仅仅摆放一个圆盘,那么...转载 2018-04-24 17:25:42 · 5435 阅读 · 1 评论 -
动态规划
动态规划(DP)思想:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。(在分治思想中,前一子问题和后一子问题互不影响)在求解任一子问题时,列出各种可能的局部解,通过决策保...原创 2018-04-25 20:09:23 · 209 阅读 · 0 评论