作为数据结构的基础,树分很多种,像 AVL 树、红黑树、二叉搜索树....今天我想分享的是关于二叉树,一种基础的数据结构类型。
01
什么是树
在《数据结构》[注1] 中树有如下定义:
树是 n(n≥0) 个结点的有限集
在此我对上述定义做出如下解释:
当 n=0n=0 时,为空树,树的深度与高度均为 00,是树的一种特例;当 n>0n>0 时,为非空树,树的第一个结点,即深度为 11 的结点,我们称其为根结点,由根结点可以引出若干子树分支,同时子树分支可依此向下延伸,此时树的深度与高度也在变化,即树状图。
这里我们需要厘清树的深度与树的高度与其他树的术语:
树的深度:树中结点的最大层次
树的高度:从叶子结点开始定义,叶子结点为第一层,往上依次递增,直至根结点。
结点:树的结点包含一个数据元素以及若干指向其子树的分支
度:结点所拥有的子树数量
终端节点:度为0的结点称为叶子结点或终端结点
树的度:树中各结点度的最大值
层次:从根开始定义,根为第一层,依次递增
有序树: