树的后根遍历图解_图解 6 种树,你心中有数吗。。。

数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储、组织方式。

我们在学习数据结构时候,会遇到各种各样的基础数据结构,比如堆栈、队列、数组、链表、树...这些基本的数据结构类型有各自的特点,不同数据结构适用于解决不同场景下的问题。

树形结构相比数组、链表、堆栈这些数据结构来说,稍微复杂一点点,但树形结构可以用于解决很多实际问题,因为现实世界事物之间的关系往往不是线性关联的,而「树」恰好适合描述这种非线性关系。

今天就带大家一起学习下,数据结构中的各种「树」,这也是面试中经常考察的内容,手撕二叉树是常规套路,对候选人也很有区分度,学完这篇文章,相信大家都会心中有「树」了。

从树说起

什么是树?现实中的树大家都见过,在数据结构中也有树,此树非彼树,不过数据结构的树和现实中的树在形态上确实有点相像。

树是非线性的数据结构,用来模拟具有树状结构性质的数据集合,它是由n个有限节点组成的具有层次关系的集合。在数据结构中树是非线性数据结构,那我们先来了解下,什么是线性与非线性数据结构?

线性结构

「线性结构」是一个有序数据元素的集合。其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的,常用的线性结构有:线性表,栈,队列,双端队列,数组,串。

63a95f5800d83116d6817333afc994ba.png 树的后根遍历图解_图解 6 种树,你心中有数吗。。。_第1张图片

可以想象,所谓的线性结构数据组织形式,就像一条线段一样笔直,元素之间首尾相接。比如现实中的火车进站、食堂打饭排队的队列。

非线性结构

简而言之,线性结构的对立面就是「非线性结构」

线性结构中节点是首位相接一对一关系,在树结构中节点之间不再是简单的一对一关系,而是较为复杂的一对多的关系,一个节点可以与多个节点发生关联,树是一种层次化的数据组织形式,树在现实中是可以找到例子的,比如现实中的族谱,亲戚之间的关系是层次关联的树形关系。

数据结构中的「树」的名字由来,是因为如果把节点之间的关系直观展示出来,由于长得和现实世界中的树很像,由此得名。如图:

树的后根遍历图解_图解 6 种树,你心中有数吗。。。_第2张图片

树的关键概念

人们对树形结构的研究比较深入,为了方便研究树的各种性质,抽象出了一些树相关的概念,以便清晰简介的描述一颗树。下面几个基础概念必须了解,否则你当你刷LeetCode树相关题目时候,或者面试官向你描述问题时,你会连题目都看不懂事什么意思。

先来上一个图解,下面的术语和概念对照着看,更容易理解。

树的后根遍历图解_图解 6 种树,你心中有数吗。。。_第3张图片

什么是节点的度?

度很好理解,直观来说,数一下节点有几个分叉就说这个节点的度是多少。

什么是根节点?

在一颗树形结构

你可能感兴趣的:(树的后根遍历图解)