前面我们讲的所有的数据结构都是线性表结构,栈、队列等等。现在我们来讲一种非线性表结构——树。
树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,其应用也十分的广泛。
在正式的内容开始之前,我想先问大家一个问题:我们为什么需要二叉树?带着这个问题,我们就来学习今天的内容吧!
1. 为什么需要树这种数据结构
客观世界中许多事务存在层次关系,比如说社会组织结构以及信息管理等,这种分层次的组织被证实有着更高的效率。而将这种分层次的结构抽象到数据结构世界中,我们就得到了树这种数据结构。
我们知道,数据管理最基本的操作之一就是查找,那么,就是让我们以查找作为引子,引出树这种数据结构。查找分为静态查找和动态查找,其中静态查找是指要查找的数据是固定不变的,而动态查找是指要查找的数据是不断变化的。
1.1 从二分查找到二叉树
提到静态查找,我们最容易能想到的就是顺序查找,这种查找方法效率较低,其时间复杂度为:O(n)。
相比较于顺序查找,二分查找的效率要高很多,而且二分查找是一个基础且经典的查找算法,下面让我们来走进二分查找。
二分查找需要待处理得数据是排好序的,其基本步骤如下:
- 给出要查找的元素 key