数据结构,毋庸置疑,在程序设计中是极其重要的存在,在计算机科学中,不只是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。
刚刚讲完这方面的基本内容,因此,CSDN的这次的文章文章就选择了数据结构(也是打算再次补习可怜的基础)
基础概念及基本术语
数据 总的来说在计算机科学中所有能输入到计算机中并被计算机程序处理的符号的总称,而实际上由于现在的技术,几乎任何可以输入到计算机的格式都可以称为数据,如图像,声音等。
数据元素 数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。同时由数据项组成。
数据项 数据的不可分割的最小单位。
数据对象 性质相同的数据元素的集合
数据结构 相互之间存在的一种或多种特定关系的数据元素的集合。其有4类基本结构:
(1)集合
(2)线性结构
(3)树形结构
(4)图状结构或网状结构
其定义形式为一个二元组:Data_Structure=(D,S) 其中:D是数据元素的有限集,S则是D上关系的有限集
而正因为结构定义的“关系”是数据元素之间的逻辑关系,因此又被称为数据的逻辑结构。
与之对比的是数据结构在计算机中的表示,称为数据的物理结构,又称存储结构,如位,字节等。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像
而因此我们也能够得到两种不同的存储结构:顺序存储结构和链式存储结构,与之代表的首先便能想到顺序表和链表了。
下面介绍非线性结构—树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结。
树为了描述现实世界的层次结构,树结构中一个数据元素可以有两个或两个以上的直接后继元素。
1、结点的度
结点的度是子结点的个数。例如:结点1有三个字结点2,3,4,所以结点1的度为3。
2、树的度
树的度等于所有结点度中度最高的值。例如:上图中结点度最高为3,所以树的度为3。
3、叶子结点
叶子结点是度为0的结点即没有子结点的结点。例如:上图中3,5,6,7,9,10。
4、分支结点
分支结点是除了叶子结点,树中的其他所有结点。例如:上面树的分支结点为1,2,4,8。
5、内部结点
内部结点是除了根结点以及叶子结点或在分支结点的基础之上在去掉根结点。例如:上面树的内部结点为2,4,8。
6、父结点、子结点、兄弟结点
父节点、子结点和兄弟结点是相对而言的。例如:结点1是结点2,3,4的父节点,结点2,3,4也是结点1的子结点,结点2,3,4又是兄弟结点。
7、层次
图中我们已经表出来了,根为第一层,根的孩子为第二层,依此类推,若某结点在第i层,则其孩子结点在第i+1层。
树的基本概念:
树的概念是学习树的关键所在,掌握了树的基本概念,学会树与二叉树,so easy。我通过一棵树来了解树的基本概念。
性质:
一般二叉树性质:
在非空二叉树的k层上,至多有2k个节点(k>=0)
高度为k的二叉树中,最多有2k+1-1个节点(k>=0)
对于任何一棵非空的二叉树,如果叶节点个数为n0,度数为2的节点个数为n2,则有: n0 = n2 + 1
完全二叉树性质:
具有n个节点的完全二叉树的高度k为[log2n]
对于具有n个节点的完全二叉树,如果按照从上(根节点)到下(叶节点)和从左到右的顺序对二叉树中的所有节点从0开始到n-1进行编号,则对于任意的下标为k的节点,有:
如果k=0,则它是根节点,它没有父节点;如果k>0,则它的父节点的下标为[(i-1)/2];
如果2k+1 <= n-1,则下标为k的节点的左子结点的下标为2k+1;否则,下标为k的节点没有左子结点.
如果2k+2 <= n-1,则下标为k的节点的右子节点的下标为2k+2;否则,下标为k的节点没有右子节点
满二叉树性质:
在满二叉树中,叶节点的个数比分支节点的个数多1