栈的简单实现
栈的概念及结构 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 (封闭了一端的线性表) 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在...
栈的概念及结构 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 (封闭了一端的线性表) 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在...
一,堆的定义 1.概念 堆就是一棵可以自我平衡的完全二叉树,存储结构连续,可看作是顺序表。 2.性质 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小...
分析堆排序 上篇介绍二叉树笔记在最后实现了一个简单的堆排序: 思路 先创建一个堆,用堆堆顶的性质:选出最大或最小 用删除堆顶元素的性质:找出次大或次小 对数组进行排序 时间空间复杂度 插入和删除的时间复杂度为o(logn),最差情况下是...
二叉树的遍历 二叉树的遍历有:前序/中序/后序的递归结构遍历: 1. 前序遍历(preorder traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。 2. 中序遍历(inorder traversal)——访问...
全排列问题系列,您将学到如何设计递归,递归的好坏直接影响到动态规划,其次递归涉及到深度优先遍历时,要考虑恢复现场,如何剪枝,如何去重等技巧。 一、全排列问题 i 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。...
一、树的相关概念 在学习各种树的算法以及应用时,让我们先来学习一下树的相关概念。 1.1 结点的度 在树中,结点的度表示结点拥有的子树的数目,即结点有几颗子树,该结点就有几度。 下面来看图理解下。 在上图中,结点 a 有两棵子树,分别是 b...
问题描述: 给定一个链表,判断链表中是否有环。 首先介绍一下快慢指针: 我们定义两个指针,一快一慢。慢指针每次只移动一步,而快指针每次移动两步。 来看以下例子: 在环形链表问题中,我们用slow和fast指向链表的开始,slow一次走一步,...
文章目录 选择排序 平衡字符串 买股票的最佳时机 跳跃游戏 钱币找零 多机调度问题 活动选择 无重叠区间 选择排序 我们熟知的选择排序,其采用的就是贪心策略。 它所采用的贪心策略即为每次从未排序的数据中选取最小值,并把最小值放在未排序数据的...
二叉搜索树概念与操作 二叉搜索树的概念 二叉搜索树又称二叉排序树,若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值,它的左右子树也分别未二叉搜索树。也可以是一颗空树。 i...
前言 前一篇博客总结了动态规划,但是对于我这初学者,还是很多地方不能理解,所以我就在网上找到了一个大神的讲解,确实很棒。转载过来。 原文链接在下面参考资料。 1. 动态规划套路详解 下面通过对斐波那契数列和这道凑零钱问题详解动态规划。如果只...