![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
#define微光
努力奔跑,总有一天会到达想到的地方!
展开
-
数据结构--时间和空间复杂度
1.算法效率在数据结构中描述算法的效率有两种方法:一是时间效率,就叫做时间复杂度,二是空间效率,叫做空间复杂度在计算机发展早期,因为存储容量小,所以空间复杂度就显得很重要,而随着计算机的发展,存储空间已经有了很大的飞跃,所以如今就减少了对空间复杂度的关注,而转向了时间复杂度2. 时间复杂度时间复杂度:一个算法所花费的时间与其中语句的执行次数成正比,所以时间复杂度就是算法中的基本操...原创 2019-03-31 19:26:15 · 346 阅读 · 0 评论 -
牛客笔试题---实现一个函数,检查二叉树是否平衡
题目描述:实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡代码展示:public class Balance { class TreeNode{ TreeNode root = null; Tree...原创 2019-06-16 19:13:24 · 462 阅读 · 0 评论 -
一棵完全二叉树第六层有9个叶子结点(根为第一层),则结点个数最多有多少个
分析:方法一:根据二叉树的性质,第i层上的结点数最多为2^i(i >= 0,所以第一层为i=0)个,所以第六层的结点数最多为2^5=32个,根据题意第六层有9个叶子结点,推测出还有第七层,所以第六层结点数减去9个叶子结点,剩下的23个结点都有左右子树,故第七层有23*2=46个结点,总的结点数=2^0+2^1+2^2+2^3+2^4+2^5+46=109个方法二:总结点数=七...原创 2019-06-16 15:34:59 · 12440 阅读 · 0 评论 -
线性表
线性表:n个具有相同特性的数据元素的有限队列常见线性表包括: 线性表在逻辑上是线性结构,但在物理结构上不一定是连续的,线性表在物理存储时,通常以数组或链式结构进行存储一.顺序表顺序表:用数组存储数据的物理地址连续的线性结构,在数组上完成数据的增删改查接口实现://在pos位置插入valboolean add(...原创 2019-06-16 14:13:47 · 128 阅读 · 0 评论 -
镜像二叉树
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像输入描述:二叉树的镜像定义:源二叉树 镜像二叉树 8 ...原创 2019-06-10 17:04:10 · 126 阅读 · 0 评论 -
java实现----合并两个有序链表
合并两个有序链表,原来两个链表是有序的,合并完整体也要保证有序思路: 同时遍历两个链表的各自结点 进行值的比较,哪个值小就放入到新的链表中 放置的方式是尾插,当一个链表中的所有结点都被取走之后,直接将剩余链表的结点接到结果链表后就行了OK,说完思路来看代码package com.bittech;/** * Author:weiwei * description...原创 2019-05-06 21:52:29 · 1764 阅读 · 0 评论 -
java实现----反转一个单链表
单链表是一种常见的数据结构,由一个一个结点通过指针方式连接而成,每个结点由两个部分组成:一 是数据域,用于存储结点数据,二 是指针域,用于存储下一个结点的地址.这个题在面试题中会经常考到,划重点!!!思路: 所谓的单链表反转就是把每个节点的指针域由原来的指向下一个结点改为指向其前一个结点,但由于单链表没有志向前一个结点的指针域,因此需要增加一个指向前一个结点的指针prev,用于存储每...原创 2019-05-06 20:40:20 · 569 阅读 · 0 评论 -
Java数据结构----堆的概念及结构
二叉树有两种实现结构,一种是链式结构(详解在上一篇),一种就是顺序结构,普通二叉树其实是不适合用数组来存储数据,因为会造成大量空间的浪费,但完全二叉树似乎更合适于顺序结构存储,我们通常把堆(完全二叉树)使用顺序数组来存储1. 什么是堆?堆就是将一个集合的数据按照完全二叉树的顺序结构存储在一个一维数组中,堆在逻辑上是一棵完全二叉树,在物理结构上是一个一维数组.按照根结点的大小分为大堆(根...原创 2019-05-02 16:48:14 · 2774 阅读 · 0 评论 -
二叉树的链式结构遍历
所谓遍历(Traversal)就是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问,访问结点所做的操作依赖于具体的问题应用,如下图是一颗二叉树,红色路线位遍历路线 二叉树的遍历按照访问结点的顺序分为:前序遍历(PreOrder Traversal):先访问根结点,再访问左右子树中序遍历(InOrder Traversal):先访问左子树,然后是根结点,...原创 2019-04-21 12:21:44 · 291 阅读 · 0 评论 -
七大经典排序算法(动图演示+代码展示)
常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 算法复杂度1. 冒泡排序(BubbleSort)冒泡排序是一种简单的排序算法,是...原创 2019-04-21 10:07:50 · 3359 阅读 · 2 评论 -
在Java中,HashMap中是用哪些方法来解决哈希冲突的?
来看一道题,问HashMap是用下列哪种方法来解决哈希冲突的?A 开放地址法B 二次哈希法C 链地址法D 建立一个公共溢出区答案是:C解决哈希冲突的方法有三种,分别是:开放地址法:寻找下一个为空的数组下标,而后将冲突元素存储 再散列法(二次哈希法):再次使用一个不同的哈希算法再计算一次 (第一次%16换另一个数进行%运算) 链地址法(拉链法):将所有冲突元素按照链表存储...原创 2019-07-31 01:21:53 · 8719 阅读 · 1 评论