数据结构二叉树

243 阅读4分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。

<一>对于长度为n的线性表,在最坏情况下  需排序最坏的情况下需要比较多少次

冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2

快速排序法的最坏情况比较次数也是n(n-1)/2。

 

二分法

二分法查找只适用于顺序存储的有序表。

如果采用链式存储结构,也只能用顺序查找,

有序表

有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。

 

数据的逻辑结构

分为:线性结构与非线性结构

一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的

 

数据的存储结构为

顺序和链式是数据的存储结构

 

线性结构与非线性结构

线性结构的定义:① 有且只有一个根结点;② 每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表

所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

双链表  和 二叉树链表

双链表和二叉链表的结点都有两个指针域,前者是线性结构,后者是非线性结构。

 

只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构        

树的遍历顺序大体分为三种:

前序遍历(先根遍历、先序遍历),中序遍历(中根遍历),后序遍历(后根遍历)。

 

前序遍历:前序遍历可以记为根左右,若二叉树为空,则结束返回。

**

中序遍历:中序遍历可以记为左根右,也就是说在二叉树的遍历过程中,首先要遍历二叉树的左子树,接着遍历根节点,最后遍历右子树。 

中序遍历的输出结果:DBEAFC

后序遍历:后序遍历可以记为左右根,也就是说在二叉树的遍历过程中,首先按照后序遍历的规则遍历左子树,接着按照后序遍历的规则遍历右子树,最后访问根节点。

后序遍历的输出顺序:DEBFCA

时间复杂度  和  空间复杂度

算法的复杂度主要包括时间复杂度和空间复杂度:空间复杂度和时间复杂度无关

需辅助存储空间的大小称为算法的空间复杂度

算法的时间复杂度是指 执行算法所需要的计算工作量。执行该算法时所需要的基本运算次数

 

二叉树

二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为n,故叶子结点数为n+1个。

叶子结点

叶节点是树的底部段中的节点,叶节点不具有子节点。

 

线性表的排序

对于长度为n的线性表,在最坏的情况下,快速排序所需要的比较次数为n(n-1)/2;冒泡排序所需要的比较次数为n(n-1)/2;直接插入排序所需要的比较次数为n(n-1)/2;堆排序所需要的比较次数为 。

 

 

二分法

二分法检索要求线性表结点按关键值排序且以顺序方式存储。在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。二分法检索的效率比较高,设线性表有n个元素,则最多的检索次数为大于log2n(2为底数)的最小整数,最少的检索次数为1。

 

顺序存储和链式存储

 

 1.顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,

2.线性表的顺序存储结构具有两个基本特点:1.线性表中所有元素所占的存储空间是连续的;2.线性表中各元素在存储空间中是按    逻辑顺序依次存放的。

3、链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,