数据结构与算法
文章平均质量分 57
Richard_Gosling
唯代码和好姑娘不可辜负
展开
-
链表算法解题思路总结
一、删除结点解题思路哑结点+双指针哑结点:在一个链表的前边添加一个结点双指针:(1)快慢指针(2)前驱指针和工作指针题目来自leetcode和牛客网的剑指offer1.删除链表中的结点leetcode237思路分析找到该节点node的前驱结点,修改结点的next指针,使其指向node的下一个结点。todo 代码扩展:有没有时间复杂度为O(1)的方法?思路分析把将要删除的n...原创 2020-02-23 18:22:27 · 1032 阅读 · 0 评论 -
二叉树算法解题思路总结(二)
第一步:先考虑用递归的方式解决问题,注意递归的终止条件。有的递归需要用到回溯法和全局变量第二步:如果递归无法解决问题,考虑迭代法,具体的迭代方式参考层序遍历和非递归遍历本篇文章主要介绍迭代法,题目来自leetcode和牛客网的剑指offer六、打印二叉树1.把二叉树打印成多行:牛客网题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行思路分析用一个队列来存储上一...原创 2020-02-22 23:29:52 · 394 阅读 · 0 评论 -
二叉树算法解题思路总结(一)
第一步:先考虑用递归的方式解决问题,注意递归的终止条件。有的递归需要用到回溯法和全局变量第二步:如果递归无法解决问题,考虑迭代法,具体的迭代方式参考层序遍历和非递归遍历本篇文章只介绍第一步相关的内容,题目来自leetcode和牛客网的剑指offer一、找结点1.二叉搜索树的最近公共祖先:leetcode236题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百...原创 2020-02-22 22:04:02 · 2202 阅读 · 0 评论 -
Java实现二叉树的遍历(递归和非递归)
现有一颗如下图所示的二叉树一、基本概念(1)先序遍历(深度优先遍历):前、中、后这三个词是针对根节点的访问顺序而言的先访问根结点,再访问左子结点,最后访问右子结点。图中的二叉树的先序遍历的顺序是1 2 4 8 9 5 3 6 7(2)中序遍历:先访问左子结点,再访问根结点,最后访问右子结点。图中的二叉树的中序遍历的顺序是8 4 9 2 5 1 6 3 7(3)后序遍历:先访问...原创 2020-02-22 15:09:38 · 775 阅读 · 0 评论 -
常见数据结构的查找、插入、删除时间复杂度
查找 插入 删除数组 o(n) o(1) o(n)有序数组 o(lgn) o(n) o(n)链表 o(n) o(1) o(n)有序链表 o(n) o(n) o(n)二叉树最坏 o(n)原创 2017-07-24 10:55:39 · 9544 阅读 · 1 评论 -
哈希表
1.什么是哈希表:元素是链表的数组Hash Table,也叫散列表,是根据关键码值(Key Value)而直接进行访问的的一种数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找速度。这个函数叫做散列函数,存放记录的数组叫做散列表。哈希表隐藏了内部细节, 而对外的使用则非常的简单.只需定义key的hash函数和compare函数即可. 2.哈希表时间复杂原创 2017-07-24 10:38:59 · 253 阅读 · 0 评论 -
关于树的面试题
1.完全二叉树与满二叉树:(1)满二叉树:要么是叶子结点(结点的度为0),要么结点同时具有左右子树(结点的度为2)。(2)完全二叉树:除了最后一层以外,每层结点都完全填满,在最后一层上如果不是满的,则只缺少右边的若干结点。(3)完美二叉树:每层结点都完全填满。 2.哈夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最原创 2017-07-24 10:07:27 · 3998 阅读 · 1 评论 -
Java搞定面试中的二叉树题目
package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Stack;转载 2017-08-07 16:31:19 · 167 阅读 · 0 评论