![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
小癞子
这个作者很懒,什么都没留下…
展开
-
集合栈
题目描述: 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。给定一个操作序列int[][2] ope(C++为vector&ltvector&ltint>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若...原创 2018-08-09 22:35:24 · 266 阅读 · 0 评论 -
二叉树的镜像
最终的实现结果如图所示:过程为:先前序遍历整棵树的节点,如果遍历到的节点有子节点,就交换它的两个子节点,当交换完它所有的非叶子节点的左右子节点之后,就得到了树的镜像代码实现如下:void* Mirror(TreeNode *pRoot){ if(pRoot==NULL) { return; } if(pRoot->left=...原创 2018-08-14 21:01:30 · 180 阅读 · 0 评论 -
二叉树的深度
思路如下:如果树是空树,就返回0;如果一棵树只有一个节点,那么它的深度为1;如果根节点只有左子树,树的深度为左子树的深度+1;如果根节点只有右子树,树的深度为右子树+1;如果根节点既有左子树,又有右子树,树的深度为左子树和右子树的最大值+1用递归实现的代码如下;int TreeDepth(TreeNode* pRoot) { if(pRoot=...原创 2018-08-14 21:43:47 · 185 阅读 · 0 评论 -
栈的逆序
题目描述: 一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底围1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数实现,不能用其他数据结构。代码实现如下:class ReverseStack {public: vector<int> reverseStackRecursively(vector&...原创 2018-08-12 12:30:25 · 1651 阅读 · 0 评论 -
c语言版的用两个栈实现一个队列
基本思想:一个栈实现队列的入,一个栈实现队列的出假设先将元素都压入stack1,如果将stack1中的元素逐个弹出并压入stack2,则元素在stack2中的顺序正好和原来在stack1中的顺序相反,也就是stack2中的栈顶元素就是队列中先入的元素,然后弹出stack2的栈顶元素,就实现了队列的“先入先出”的特点当stack2不为空时,在stack2中的栈顶元素是最先进如队列的元素,可以...原创 2018-08-08 16:24:31 · 2904 阅读 · 1 评论 -
二叉树的下一个节点
题目描述:给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别别指向左右子节点的指针,还有一个指向父节点的指针例如:这棵树的中序遍历是:D,B,H,E,I,A,F,C,G解题思路:(1)当节点的右子树不为空:节点的下一个节点就是这个节点的右子树中的最左子节点,也就是从右子节点出发一直沿着指向左子节点的指针,走到最后一个叶子节点就是此节点的下一个...原创 2018-08-16 21:44:39 · 760 阅读 · 0 评论 -
根据前序和中序重建二叉树
解题思路:根据前序遍历的特点“根,左,右”,得出前序遍历的第一个节点就是整棵树的根 根据中序遍历的特点“左,根,右”,找到中序遍历中和根节点相同的节点,也就是根节点的位置 在中序中,根节点左边的为整棵树的左子树,根节点后边的为整棵树的右子树,同时也就确定了左右子树的数量 在前序遍历和中序遍历中划分了左右子树节点的值之后,再用递归的方法分别构建左右子树例如: c代码如下:...原创 2018-08-17 10:05:33 · 302 阅读 · 0 评论 -
链表的逆置
说明:这个链表是不带头结点的方法1:就地逆置,需要三个指针,分别指向连续的三个节点,p2指向当前位置,p1指向前一个结点,p3指向后一个节点,每一次循坏让p2的pNext指向p1,,然后p1,p2,p3分别向后指一个节点,直到p3和p2都指向了空图解如下: 代码实现:ListNode* Reverse(ListNode* pHead){ assert(pHead); L...原创 2018-08-31 22:59:35 · 448 阅读 · 0 评论 -
排序算法
1.冒泡排序实现冒泡排序,基于一个整数的数组进行排序 升序排序 时间复杂度O(N^2) 空间复杂度O(1) 稳定性:稳定代码如下:void Swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; return;}void BubbleSort(in...原创 2018-09-02 19:36:21 · 228 阅读 · 0 评论