基本数据结构概念

一、线性结构

顺序存储线性表:将元素依次存储在地址连续的存储单元中,物理上相邻

链式存储线性表:将元素按照逻辑顺序链接在依次,不要求地址连续

栈:仅在表的一端进行插入、删除操作的线性表,“后进先出”

队列:仅在表的一端进行插入,另一端进行删除的线性表,“先进先出”

栈和队列有时候笔试会针对”FIFO“这些特性出问题,不过一般理解了,就比较简单。

二、树

2.1概念

二叉树是每个节点最多有两个子树(“左子树”和“右子树”)的树结构。

满二叉树:二叉树的每一层节点个数都达到最大(即深度为k,且有2^k-1个节点);

完全二叉树:只有最下面两层节点的度数可以小于2,并且最下一层的节点都集中在左边(深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应)。

满二叉树是完全二叉树的特例,如下图:

平衡二叉树:又被称为AVL树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树(完全二叉树是平衡二叉树),如下图

2.2二叉树性质:

  • a.二叉树的第i层至多有2^{i-1}个结点;
  • b.深度为k的二叉树至多有2^k-1个结点;
  • c.具有n个节点的完全二叉树的深度k=log2n+1;
  • d.对任何一棵二叉树T,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。

2.3二叉树遍历

二叉树遍历记住一点就行了,即遍历的顺序都是针对根节点而言的。例如先序即先访问根节点,再遍历左子树,最后遍历右子树。结合实例来讲,如下图:

先序遍历结果:abdgcefh

中序遍历结果:dgbaechf

后序遍历结果:gdbehfca

三、图

无向完全图:任意两个顶点都有一条直接边相连接;在含有n个顶点的无向完全图中,有n(n-1)/2条边;

有向完全图:任意两个顶点都有方向互为相反的两条弧相连接;在含有n个顶点的有向完全图中,有n(n-1)条边。

图的深度优先遍历:类似于树的先序遍历,下图显示了深度优先搜索顶点被访问的顺序:

图的广度优先遍历:类似于树的按层次遍历,下图显示了广度优先搜索顶点被访问的顺序:

时间: 2024-11-08 22:39:06

基本数据结构概念的相关文章

HBase的概念和性能选项

在本文中的HBase术语:基于列:column-oriented行:row列组:column families列:column单元:cell 理解HBase(一个开源的Google的BigTable实际应用)最大的困难是HBase的数据结构概念究竟是什么?首先HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. Google's BigTable论文清楚地解释了什么是BigTable:Bigtable是一个疏松的分布式的持

Visual Studio 2010:测试驱动的开发

概述 测试驱动开发 (Test Driven Development, TDD),通常也称作测试驱动设计,是一种开发方法.在该方法中,开发人员首先编写单元测试,然后编写实际系统代码来确保可以顺利通过单元测试.可以将单元测试看作是系统行为的小型规范:首先编写单元测试可以让开发人员仅编写足够通过测试的代码,有助于确保系统的紧凑.轻量,并能明确专注于满足已确定的需求. TDD 的步调是"红色.绿色和重构."红色表示失败测试的可视显示--最初编写的测试并不会通过,因为您还没有为它编写任何代码.

Tensorflow 全网最全学习资料汇总之Tensorflow 的入门与安装【2】

自2015年11月发布以来,谷歌旗下的机器学习开源框架TensorFlow已经在图像识别,大数据分析,语音识别和语义理解,机器翻译等各个领域得到了广泛应用,同时也得到了业内人士的普遍认可,成为了目前最受关注和使用率最高的开源框架之一. 本文将重点整理TensorFlow框架的入门和安装教程.更多关于TensorFlow的深入介绍.应用项目以及各机器学习开源框架之间的对比等内容,请见雷锋网的系列文章. 下面是本文整理的资料内容: 在安装之前,这里先列出一些对TensorFlow给出大略介绍的文章,

做网站开发的有几样东西是必须要有(转)

引语:网络安全向来都是惹人关注的话题!安全的层级也是数之不尽,但是作为一个简单粗暴的防卫方式:验证码,还是比较有效的.因此,想来,谈谈验证码那家子的事儿应该也是比较有意思的! 最近看到一篇文章 黑客魔术(http://www.leiphone.com/news/201602/wsLS6uLbnH5M0rx7.html),其中心思想是:我们的计算机在网络世界里机关重重,但在物理世界里却近乎裸奔. 请抱以围观的态度观看本文,我们只是在读故事而已!本文将分几个点以及一些故事进行验证码闲谈! 1. 为什

关于面对对象问题

问题描述 不知道谁可以把面对对象形象的比喻一下呢?我以前见过一些程序员用VB啊PB的,好像写开程序了就按着流程写就行了,仿佛懂些逻辑思维就往死的写,(我说的不专业啊!)没有看出一些概念性的东西来!因为我也新手,听说掌握一门语言再学别的语言都有相似之处我不是完全能搞明白我看了前面一个朋友发的帖子.他说学习编程3年没有数据结构概念就要努力了!这个真的这么难吗?我有个朋友是搞编程的,他以前没有学过数据结构啊.也在他们公司干的不错啊!!这个东西就这么抽象吗?大家帮我解释下啊~~我有点晕!!刚开始学习C#

数据结构教程 第一课 数据结构的基本概念和术语

本课主题:数据结构的基本概念和术语 教学目的:了解数据结构的基本概念,理解常用术语 教学重点:基本概念:数据与数据元素 教学难点:数据元素间的四种结构关系. 授课内容: 一.数据.数据元素.数据对象.数据结构的定义 1.数据的定义 定义一:数据是客观事物的符号表示. 学号 姓名 语文 数学 C语言 6201001 张三 85 54 92 6201002 李四 92 84 64 6201003 王五 87 74 73 6201004         ...         例:张三的C语言考试成绩

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

数据结构与算法导论之基本概念和术语介绍

为了与大家取得"共同的语言",下面对一些概念和术语赋予确定的含义. 1.数据(data):对客观事物的符号表示,在计算科学中指所有能输入到计算机中并被计算机程序处理的符号总称. 2.数据元素(data element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理.一个数据元素可以由若干个数据项(data item)组成,数据项是数据不可分割的最小单位. 3.数据对象(data object):性质相同的数据元素的组合,是数据的一个子集. 总结而言,数据.数据对象.数

数据结构-java集合框架里说的堆栈和内存存储里说的堆栈两个堆栈是一个概念么

问题描述 java集合框架里说的堆栈和内存存储里说的堆栈两个堆栈是一个概念么 最近在看java集合框架,有列表啊,散列,堆栈等概念.感觉这是以数组,java代码为基础的处理数据集合的容器.但是之前经常 看到说内存就是种堆和栈,而内存这块是jvm帮我们处理的,也就是说不是java代码关心的内容.而且还有篇博客说了内存的控制 是由汇编实现的,然后将一段C++代码编程成汇编,汇编指令实际是按堆栈模式工作的. 本人有点疑惑,感觉数据结构里的堆栈和内存中的堆栈的实现不是一回事啊,想问下两者是不同的层面上的