不同与我们之前介绍的线性结构,今天我们介绍一种非线性结构:树,树的内容比较多,包括BST树、AVL树、Trie树等,这部分内容将放在下几个章节陆续放出,本章将介绍树与二叉树的基础必会内容,在开始这一章节前,请思考以下内容:
什么是树?
树的高度怎么计算?
什么是二叉树?
什么是平衡二叉树?
在代码中如何表示一棵二叉树?
二叉树的前序、中序、后序遍历又是什么?如何实现?
能否用递归及迭代两种方式实现喃?
下面进入本节内容👇
一、树
不同于我们上面介绍的线性结构,树是一种非线性结构。
图:
它遵循:
仅有唯一一个根节点,没有节点则为空树
除根节点外,每个节点都有并仅有唯一一个父节点
节点间不能形成闭环
这就是树!
树有几个概念:
拥有相同父节点的节点,互称为兄弟节点
节点的深度 :从根节点到该节点所经历的边的个数
节点的高度 :节点到叶节点的最长路径
树的高度:根节点的高度
B、C、D就互称为兄弟节点,其中,节点B的高度为2,节点B的深度为 1,树的高度为3
高度
树的高度计算公式:
下图每个节点值都代表来当前节点的高度:
二、二叉树
二叉树,故名思义,最多仅有两个子节点的树(最多能分两个叉的树🤦♀️):
图: