第6章 树和二叉树

序言

为什么需要树结构?

1.数组存储方式的分析

优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。

缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低。

2.链式存储方式的分析

优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。

缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历) 。

3.树存储方式的分析

能提高数据存储,读取的效率, 比如利用二叉排序树(Binary Sort Tree),既可以保证数据的检索速度,同时也可以保证数据的插入,删除,修改的速度。

树的概述

 

树的存储

树的顺序存储

顺序存储二叉树应用实例

八大排序算法中的堆排序,就会使用到顺序存储二叉树, 关于堆排序,我们放在<<树结构实际应用>> 章节讲解

先序遍历、中序遍历、后序遍历

线索二叉树

 

树的链式存储

先序遍历、中序遍历、后序遍历

二叉树

二叉查找树是一种查找效率非常高的数据结构,它有三个特点。

  1. 每个节点最多只有两个子树。
  2. 左子树都为小于父节点的值,右子树都为大于父节点的值。(左<父<右)
  3. 在n个节点中找到目标值,一般只需要log(n)次比较。

二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。越处在下层的数据,就需要越多次比较。极端情况下,n个数据需要n次比较才能找到目标值。

对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘的读取时间远远大于数据处理时间,数据库读取硬盘的次数越少越好。

树的遍历

1.广度优先遍历

英文缩写为BFS即Breadth FirstSearch。其过程检验来说是对每一层节点依次访问,访问完一层进入下一层,而且每个节点只能访问一次。

对于上面的例子来说,广度优先遍历的 结果是:A,B,C,D,E,F,G,H,I(假设每层节点从左到右访问)。 先往队列中插入左节点,再插右节点,这样出队就是先左节点后右节点了。

广度优先遍历树,需要用到队列(Queue)来存储节点对象,队列的特点就是先进先出。

2.深度优先

英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

对于上面的例子来说深度优先遍历的结果就是:A,B,D,E,I,C,F,G,H.(假设先走子节点的的左侧)。 深度优先遍历各个节点,需要使用到栈(Stack)这种数据结构。

stack的特点是是先进后出。整个遍历过程如下: 先往栈中压入右节点,再压左节点,这样出栈就是先左节点后右节点了。

https://www.cnblogs.com/xiaolovewei/p/7763867.html

常见的深度遍历次序:先序遍历、中序遍历、后序遍历

有没有发现其实就是‘根’的位置发生了改变,前就是‘根’在前,中在中,后在后。 

https://blog.csdn.net/dingqianyi2007/article/details/79585153

一、先序遍历

 

二、中序遍历

 

 

三、后序遍历

 

树的遍历有何实际用途

1.输出文件名称的过程如下:

如果是文件夹,先输出文件夹名,然后再依次输出该文件夹下的所有文件(包括子文件夹),如果有子文件夹,则再进入该子文件夹,输出该子文件夹下的所有文件名。这是一个典型的先序遍历过程。

2.统计文件夹的大小过程如下:

若要知道某文件夹的大小,必须先知道该文件夹下所有文件的大小,如果有子文件夹,若要知道该子文件夹大小,必须先知道子文件夹所有文件的大小。这是一个典型的后序遍历过程。

3.中缀表达式转为后缀表达式(逆波兰表达式)。

中缀表达式是一个通用的算术或逻辑公式表示方法。符合人类的逻辑(例:3 + 4) 
后缀表达式是一种不需要括号的表达法。符合计算机的逻辑(例:3 4 +) 

资料

https://www.cnblogs.com/mfrank/p/9227097.html

http://www.ruanyifeng.com/blog/2014/07/database_implementation.html

https://www.cnblogs.com/wmyskxz/p/9295862.html

https://www.cnblogs.com/CareySon/archive/2012/04/06/Imple-BTree-With-CSharp.html

https://www.cnblogs.com/hohoa/p/12145689.html

posted @ 2019-04-13 11:33  ~沐风  阅读(294)  评论(0编辑  收藏  举报