数据结构
breakpoints_
这个作者很懒,什么都没留下…
展开
-
深度优先搜索(DFS)---LeetCode47(全排列II)
此前,也写过一篇用dfs解决全排列问题的博客,今天又遇到一个变形,于是忍不住就撸了一把代码。题目描述:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]这跟之前的思路类似,还是以每一个数为根深度优先搜索其他的数,每条路径即是一条解法,但是也有差别,之前不重复的序列,...原创 2019-03-26 19:58:39 · 208 阅读 · 0 评论 -
堆排序详解--大顶堆
堆的概念堆是一颗顺序存储的完全二叉树每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆对于n个元素的序列{R0, R1,R2,.......,Rn}当且仅当下列关系之一的时候,称之为堆 (1) Ri <= R2i + 1 且 Ri <= R2i + 2 (小根堆) (2) ...原创 2019-02-25 19:37:33 · 41715 阅读 · 2 评论 -
社招二叉搜索树面试题目——第K大的结点
需求 给定一棵二叉搜索树,求出第k大的节点。 思路 二叉 搜索树又叫二叉平衡树,左子树小于根结点,右子树大于根结点。所以中序遍历二叉搜索树的话会是从小到大排序。 实现typedef struct node{ int data; struct node *left; struct node *right;}BTNode;BTNode* searchTagC...原创 2018-07-23 12:03:47 · 233 阅读 · 0 评论 -
判断一个链表是循环链表
循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。如果去遍历循环链表,则是死循环。 这里判断循环链表的方法是; 用两个指针,一个指针是块指针(跳一个节点遍历),遍历快(p=p->netxt->next),一个指针逐步遍历,慢指针。 如果在遍历当中,如果发现这两个指针有可能是出现N...原创 2019-08-06 10:51:17 · 1361 阅读 · 2 评论