二叉树的概念

二叉树是一种特殊的树,每次分叉不超过两部分。更加严格的定义是,二叉树要么为空,要么由根节点、左子树和右子树组成,而左右子树分别还是一颗二叉树。如果一个节点没有任何子树,称为叶子节点

树的高度定义为树中从根节点到最远叶子节点的最长路径上的边数。若记为 $h$,则一共有 $2^{h+1}-1$ 个结点的二叉树称为完美二叉树(国内也常将其等同于满二叉树)。

image.png

上图即为完美二叉树,高度为 $3$。

节点的深度定义为根节点到该节点所经过的边的数量,如图中结点 $7$ 的深度为 $2$。

节点的高度定义为该节点到其子树中最深叶子节点的路径长度。如图中结点 $2$ 的高度为 $2$。

注意到完美二叉树节点编号为 $i$ 时,其左节点、右节点编号为 $2i,~2i+1$,这样就可以通过开一个静态数组实现完美二叉树的存储。

其他种类的二叉树


完全二叉树

只有最底层的节点未被填满,且最底层节点尽量靠左填充。注意完美二叉树也是一棵完全二叉树。

完全二叉树编号的规律也和完美二叉树基本一致。

image.png

完满二叉树

除了叶节点之外,其余所有节点都有两个子节点。

image.png

平衡二叉树

任意节点的左子树和右子树的高度之差的绝对值不超过 $1$。

image.png