【LeetCode】19. 删除链表的倒数第N个节点
摘要:【题目描述】 19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第?n?个节点,并且返回链表的头结点。 示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:给定的 n?保证是有效的。 进阶:你能尝试使用一趟扫
阅读全文
posted @
2020-07-02 15:28
uTank
阅读(156)
推荐(0)
【LeetCode】203. 移除链表元素
摘要:【题目描述】 203. 移除链表元素 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5 【提交代码】 1 /** 2 * Definition for singly-linked list. 3 *
阅读全文
posted @
2020-07-02 15:04
uTank
阅读(182)
推荐(0)
【LeetCode】剑指 Offer 18. 删除链表的节点
摘要:【题目描述】 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动 示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变
阅读全文
posted @
2020-07-02 14:54
uTank
阅读(163)
推荐(0)
【LeetCode】206. 反转链表
摘要:【题目描述】 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 【提交代码】 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int
阅读全文
posted @
2020-07-01 10:20
uTank
阅读(160)
推荐(0)
【数据结构】用两个栈实现队列
摘要:用两个栈实现队列: 栈无法实现队列功能: 栈底元素(对应队首元素)无法直接删除,需要将上方所有元素出栈。 双栈可实现列表倒序: 设有含三个元素的栈 A = [1,2,3] 和空栈 B = []。若循环执行 A 元素出栈并添加入栈 B ,直到栈 A 为空,则 A = [] , B = [3,2,1],
阅读全文
posted @
2020-06-30 17:11
uTank
阅读(371)
推荐(0)
【数据结构】栈的应用——括号匹配问题
摘要:括号匹配问题: 给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配。 例如:()()[]{} 匹配([{()}]) 匹配[]( 不匹配[(]) 不匹配 利用堆栈的思路:建立一个堆栈,然后遍历字符串,如果是'(','{'.'[',则入栈,否则判断当前字符串和栈顶元素是否是一对括号
阅读全文
posted @
2020-03-20 14:12
uTank
阅读(540)
推荐(0)
【数据结构】堆栈的基本操作
摘要:堆栈的概念:是一组相同类型数据的集合,并且拥有后进先出的特点,所有的操作都在堆栈顶端进行。 堆栈的基本操作: Init 创建一个空堆栈Push 把数据压入堆栈顶端Pop 从堆栈顶弹出数据Top 从栈顶取数据Empty 判断堆栈是否为空堆栈,是则返回true,否则返回falseFull 判断栈是否为满
阅读全文
posted @
2020-03-20 11:35
uTank
阅读(3406)
推荐(0)
二叉树的常见操作实现
摘要:二叉树的常见操作实现: 先序遍历、中序遍历、后序遍历层序遍历 由先序序列和中序序列建立二叉树 由后序序列和中序序列建立二叉树 由层序序列和中序序列建立二叉树 求二叉树的叶子结点数 求二叉树的高度 查找值为x的结点 输出二叉树中值为x的节点的所有祖先 输出值为x的结点的所有子孙结点 求二叉树中结点值x
阅读全文
posted @
2019-12-19 10:28
uTank
阅读(587)
推荐(0)
由层序遍历序列和中序遍历序列确定二叉树
摘要:如何通过层序遍历序列和中序遍历序列来确定一棵二叉树? 根据层序遍历序列第一个结点确定根结点; 根据根结点在中序遍历序列中分割出左右子树的中序序列; 根据分割出的左右子树的中序序列从层序序列中提取出对应的左右子树的层序序列; 对左子树和右子树分别递归使用相同的方式继续分解; 要点:根据分割出的左右子树
阅读全文
posted @
2019-12-17 10:21
uTank
阅读(6999)
推荐(0)
由后序遍历序列和中序遍历序列确定二叉树
摘要:如何通过后序遍历序列和中序遍历序列来确定一棵二叉树?? 根据后序遍历序列最后一个结点确定根结点; 根据根结点在中序遍历序列中分割出左右两个子序列; 对左子树和右子树分别递归使用相同的方式继续分解;
阅读全文
posted @
2019-12-16 11:48
uTank
阅读(3067)
推荐(0)
由先序遍历序列和中序遍历序列确定二叉树
摘要:如何通过先序遍历序列和中序遍历序列来确定一棵二叉树? 根据先序遍历序列第一个结点确定根结点; 根据根结点在中序遍历序列中分割出左右两个子序列; 对左子树和右子树分别递归使用相同的方式继续分解;
阅读全文
posted @
2019-12-16 11:44
uTank
阅读(2417)
推荐(0)
八大排序算法
摘要:【冒泡排序】 【快速排序】 【直接插入排序】 【希尔排序】 希尔排序的实质就是分组插入排序,又称为缩小增量排序。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再
阅读全文
posted @
2015-03-02 13:12
uTank
阅读(368)
推荐(0)
哈夫曼树(Huffman Tree)与哈夫曼编码
摘要:【哈夫曼树的定义】 假设有n个权值{w1,w2,...,wn},构造一颗有n个叶子结点的二叉树,每个叶子结点带权Wk,每个叶子的路径长度为Lk,则其中带权路径长度WPL最小的二叉树称做哈夫曼树。 【一些定义】 从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。
阅读全文
posted @
2015-02-12 16:51
uTank
阅读(412)
推荐(0)
堆(Heap)和二叉堆(Binary heap)
摘要:堆(Heap)The operations commonly performed with a heap are:create-heap: create an empty heapheapify: create a heap out of given array of elementsfind-ma...
阅读全文
posted @
2015-02-11 15:08
uTank
阅读(2559)
推荐(0)
优先队列(Priority Queue)
摘要:【最大堆实现优先队列】 用最大堆来实现优先队列,每一次入队操作就是堆的插入操作,每一次出队操作就是删除堆顶节点。 【入队操作】 1、插入新节点5: 2、新节点5上浮到合适位置: 【出队操作】 1、把原堆顶节点10“出队”: 2、最后一个节点1替换到堆顶位置: 3、节点1下沉,节点9成为新堆顶: 优先
阅读全文
posted @
2015-02-11 09:40
uTank
阅读(466)
推荐(0)
平衡二叉树(Balanced Binary Tree)
摘要:平衡二叉树(Balanced Binary Tree)/AVL树:
阅读全文
posted @
2015-02-10 10:50
uTank
阅读(184)
推荐(0)
二叉搜索树(Binary Search Tree)
摘要:二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树。二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值;非空右子树的所有键值大于其根结点的键值;左右子树都是二叉搜索树;Wiki中的定义:The leftsubtree...
阅读全文
posted @
2015-02-06 14:25
uTank
阅读(361)
推荐(0)
树和二叉树(代码)
摘要:【代码】 1 #include 2 #include 3 4 typedef int ElementType; 5 6 typedef struct TreeNode { 7 ElementType Data; 8 struct TreeNode *Left;...
阅读全文
posted @
2015-02-05 11:35
uTank
阅读(482)
推荐(0)
二叉树的常见操作
摘要:【输出二叉树中的叶子结点】 无论前序、中序、后序遍历,叶子结点的输出顺序都是一样的吗??都是一样的,输出顺序为:从树的左边到右边叶子!!在二叉树的遍历算法中增加检测结点的“左右子树是否都为空”。 【求二叉树的叶子结点数】 【求二叉树的高度】 【由两种遍历序列确定二叉树】 已知三种遍历中的任意两种遍历
阅读全文
posted @
2015-02-04 15:05
uTank
阅读(674)
推荐(0)
二叉树的非递归遍历
摘要:【中序遍历】中序遍历非递归遍历算法:遇到一个结点,就把它压栈,并去遍历它的左子树;当左子树遍历结束后,从栈顶弹出这个结点并访问它;然后按其右指针再去中序遍历该结点的右子树; 1 void InOrderTraversal_ext(BinTree Bt) 2 { 3 BinTree pStac...
阅读全文
posted @
2015-02-03 10:51
uTank
阅读(288)
推荐(0)