
数据结构复习
文章平均质量分 62
xinglianfly
路漫漫其修远兮,吾将上下而求索。
展开
-
数据结构 二叉搜索树的相关操作
这个地方我感觉理解简单,但是把自己想的转化为代码还是有点困难的,这篇文章主要包括了二叉搜索树的构造,前序遍历,中序遍历,后序遍历,层次遍历,节点的数目,高度等相关操作,下面是代码:main.cpp//// main.cpp// BinaryTreeDemo//// Created by xin wang on 4/16/15.// Copyright (c) 2015 x原创 2015-04-23 15:20:40 · 438 阅读 · 0 评论 -
二叉树遍历的递归实现
import java.util.ArrayDeque;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class BinaryTreeNode { int data; BinaryTreeNode left; BinaryTreeNode right...原创 2018-07-06 10:18:22 · 152 阅读 · 0 评论 -
查找算法之B树、B+树
B树是为了磁盘或其他存储设备而设计的一种多叉平衡查找树.磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写,那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费的时间比较大的一块,毕竟机械运动花费的时间要远远大于电子于东的时间。当大规模数据存储到磁盘中的时候,显然定位是一个...转载 2018-06-17 20:15:52 · 1402 阅读 · 0 评论 -
查找算法之红黑二叉查找树
红黑二叉查找树背后的基本思想是用标准的二叉查找树(完全由2-节点构成)和一些额外信息(替换3-节点)来表示2-3树。我们将树中的链接分为两种类型:红链接将两个2-节点连接起来构成3-节点,黑链接是2-3树中的普通链接。确切地说,我们将3-节点表示为由一条左斜的红色链接(两个2-节点其中之一是另一个的左子节点)相连的两个2-节点 定义红黑树的另一种定义是含有红黑链接并满足下列条件的二叉树:...原创 2018-06-16 22:58:46 · 385 阅读 · 0 评论 -
查找算法之平衡查找树
前面介绍的算法在最坏的情况下还是很糟糕。这次会介绍一种二分查找树并能保证无论如何构造它,他的运行时间都是对数级别的。理想情况下我们希望能够保持二分查找树的平衡性。但是,在动态插入中保证树的完美平衡的代价太高了。2-3查找树我们将一棵标准的二叉查找树中的节点成为2-节点(含有一个键和两条链接),现在我们引入3-节点,它含有两个键和三条链接。 查找要判断一个键是否在树中,我们先将它和...原创 2018-06-16 00:27:56 · 2020 阅读 · 0 评论 -
查找算法之二叉查找树
定义一棵二叉查找树(BST)是一棵二叉树,其中每个节点都含有一个键且每个节点的键都大于其左子树中的任意节点的键而小于右子树的任意节点的键。查找从根节点开始查找,如果要查找的元素大于根节点,就在根节点的右子树中开始查找,如果要查找的元素小于根节点,就在根节点的左子树中进行查找。 从根节点开始,在每个节点中查找的进程都会递归地在它的一个子节点上展开,因此一次查找也就定义了树的一条路径...原创 2018-06-15 15:44:11 · 723 阅读 · 0 评论 -
线性排序原理及其实现
转载自:https://www.cnblogs.com/onepixel/articles/7674659.html计数排序计数排序不是基于比较的排序算法,其核心在于将输入的数据转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。算法描述1、找出待排序的数组中的最大和最小元素。 2、统计数组中每个值为i的元素出现的次...转载 2018-05-03 22:13:53 · 2933 阅读 · 1 评论 -
非线性排序算法原理及其实现
为了更方便的实现排序算法,我们将元素交换算法单独写入到方法swap中,如下面代码://将c数组中a位置和b位置的元素交换一下 public void swap(int [] c,int a,int b){ int temp = c[a]; c[a] = c[b]; c[b] = temp; }冒泡排序原理重...原创 2018-05-02 21:42:06 · 1627 阅读 · 0 评论 -
python快排
def qsort2(data: list): if len(data) <= 1: return data pivot = data[len(data) - 1] left_list = [] right_list = [] for i in range(len(data) - 1): value = data原创 2015-11-03 20:28:17 · 396 阅读 · 0 评论 -
python 快排
import randomdef qsort(data, left, right): if left >= right: return pivot = data[left] l = left + 1 r = right while l while l原创 2015-11-03 20:25:55 · 393 阅读 · 0 评论 -
最大堆的插入 删除 初始化 堆排序
//// main.cpp// Heap//// Created by xin wang on 5/5/15.// Copyright (c) 2015 xin wang. All rights reserved.//#include class OutOfBound{public: OutOfBound(){ std::cout<<"越界"<原创 2015-05-05 22:10:20 · 684 阅读 · 0 评论 -
数据结构 二叉树 已知前序中序遍历求后续遍历的递归实现
代码很短,实现起来也很简单,下面是代码://// main.cpp// PreMidgetPost//// Created by xin wang on 4/29/15.// Copyright (c) 2015 xin wang. All rights reserved.//#include //链表二叉树的节点类template class BinaryTr原创 2015-04-29 20:40:56 · 649 阅读 · 0 评论 -
基于数组的Stack基本操作
这个没有涉及到指针还是比较简单的,但是一个需要注意的问题是在c++中,如果不给int类型的值初始化,那么int将是一个随机值。堆栈的基本操作,增加、删除栈顶元素,返回栈顶元素。//// main.cpp// StackDemo//// Created by xin wang on 4/15/15.// Copyright (c) 2015 xin wang. All righ原创 2015-04-15 19:03:00 · 605 阅读 · 0 评论 -
汉诺塔c++实现
用c++实现了汉诺塔,使用了递归,使用了上一次实现的堆栈这个数据结构来实现的汉诺塔,下面是代码:stack.h//// main.cpp// StackDemo//// Created by xin wang on 4/15/15.// Copyright (c) 2015 xin wang. All rights reserved.//#include cla原创 2015-04-16 15:52:28 · 2034 阅读 · 0 评论 -
类ChainNode和Chain
今天复习了一下数据结构的基于链表的Chain类,以涉及到指针什么的就感觉晕晕的,但是每一次复习都有每一次的进步,也会有新的理解和体会,除了练习增,删,插的基本操作以外,还写了重载操作符,还有链表的遍历容器类ChainIterator,要坚持下去,加油。//// main.cpp// ChainNodeDemo//// Created by xin wang on 4/14/15.原创 2015-04-15 17:45:24 · 1276 阅读 · 0 评论 -
LinkedList链表的使用
数据结构复习的第一天,从最简单的LinkedList开始,写这个代码的时候,没有遇到太难解决的问题,,啊,果然是自己进步了。除了c++的语法有些还不太熟悉以外,LinkedList理解起来是没有难度的,基本操作,增删改查。下面是代码://// main.cpp// LinkListDemo//// Created by xin wang on 4/14/15.// Copyrig原创 2015-04-14 13:07:38 · 476 阅读 · 0 评论 -
二叉树遍历非递归实现
import java.util.*;public class Solution { List&lt;Integer&gt; list = new ArrayList&lt;&gt;(); public List&lt;Integer&gt; preorderTraversal(TreeNode root) { // write your code here ...原创 2018-07-06 10:42:24 · 149 阅读 · 0 评论