
数据结构
文章平均质量分 67
seven_0-0
这个作者很懒,什么都没留下…
展开
-
约瑟夫环问题的链表实现
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从原创 2016-06-13 16:00:11 · 4597 阅读 · 2 评论 -
排序算法(一)直接插入排序和希尔排序
我们知道如果数据按一定的排序标准进行排序,那么数据处理的效率也会随之提高。网上的排序算法不胜枚举,在这里我也整理了一些排序算法,和大家一起交流学习。原创 2016-11-30 00:04:49 · 1089 阅读 · 0 评论 -
【剑指offer】第六题-重建二叉树
问题描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出其头节点。 问题分析: 在二叉树前序遍历中,第一个数字总是树的根节点的值。但在中序遍历中根节点则在中间,且左子树的节点的值在根节点的左边,右子树的节点的值原创 2017-06-10 12:46:00 · 373 阅读 · 0 评论 -
【剑指offer】用两个栈实现一个队列,用两个队列实现一个栈
问题1:用两个栈实现一个队列 问题描述及分析: 用两个栈实现一个队列。分别完成在队列尾部插入节点AppendTail和在队列头部删除节点DeleteHead的功能。 栈的特点是先进后出(FILO),而队列的特点是先进先出(FIFO),因此,尾部插入节点相当于入栈操作,很容易实现。但是头部删除节点比较麻烦,我们始终用stack1存储元素,用stack2作为临时空间来导出数据。当stack2为空时原创 2017-06-12 00:14:14 · 1389 阅读 · 0 评论 -
AVL树详解&面试题-判断一棵树是否是平衡二叉树
上次写了关于二叉搜索树的分析,但是二叉搜索树有一个缺陷,就是当插入一个有序(或接近有序)的序列时,二叉搜索树就相当于一个链表了,搜索效率会特别低。那么,如何来改进呢?这就引入了AVL树(高度平衡二叉树),那么下面我们一起来了解一下AVL树吧! AVL树的特征: 1、左右子树的高度差都不超过1; 2、左右子树都是AVL树; 3、每个节点都有一个平衡因子bf(blance fator ),其值为原创 2017-06-24 22:57:26 · 6313 阅读 · 0 评论 -
C++实现二叉搜索树(递归&非递归)
二叉搜索树(Binary Search Tree)的性质: 1、每个节点都有一个作为搜索关键码的key,并且所有节点的key都不相同。 2、左子树上的key值都小于根节点的key值。 3、右子树上的key值都大于根节点的key值。 4、左右子树都是二叉搜索树。 如下图为一颗二叉搜索树 实现: 二叉搜索树的插入: 二叉树的插入是根据要插入节点的key值找一个合适的位置插入节点,如果原创 2017-06-14 23:25:26 · 2791 阅读 · 1 评论