数据结构与算法之美_23_二叉树基础(上):什么样的二叉树适合用数组来存储?
前面我们学习的都是线性表结构,栈、队列等等。今天来学习一种非线性表结构,树。 二叉树有几种存储方式?什么样的二叉树适合用数组来存储? 树(Tree) “树”这种数据结构很像我们生活中的“树”,这里面每个元素叫作“节点”;用来连接相邻节点之间的关系,叫作“父子关系”。 下面的图中,A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。B、C、D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有父节点的节点叫作根节点,也就是图中节点 E。把没有子节点的节点叫作叶子结点或者叶节点,比如图中的 G、H、I、J、K、L 都是叶子节点。 树还有三个比较相似的概念:高度、深度、层。 节点的高度:节点到叶子节点的最长路径(边数) 节点的深度:根节点到这个节点所经历的边的个数 节点的层数:节点的深度 + 1 树的高度:根节点的高度 小窍门: “高度”:这个概念就是从下往上度量,比如我们要度量第 10 层楼的高度,起点是地面。所以,树的这种结构的高度也是一样,从最底层开始计数,并且计数的起点是 0。 “深度”:这个概念在生活中是从上往下度量的,比如水中的鱼的深度,是从水平面开始度量的。所以,树这种数据结构的深度也是类似的,从根节点开始度量,并且计数起点也是 0。 “层”:与深度的计算类似,不过,计数的起点是 1,也就是说根节点位于第 1 层。 二叉树(Binary