基本概念
- 节点、根节点、父节点、子节点、兄弟节点
- 一棵树可以没有任何节点,成为
空数
- 一棵树可以只有一个节点,那就是
根节点
- 子树、左子树、右子树
- 节点的
度
:子树的个数 - 数的
度
:所有节点度中最大的数 - 叶子节点:度为0的节点
- 非叶子节点:度不为0的节点
- 节点的
深度
:从根节点到当前节点的唯一路径的节点总数 - 节点的
高度
:当前接到到最远节点路径上的节点总数 - 数的
深度
:所有节点深度的最大值 - 数的
高度
:所有节点高度的最大值
二叉树(binary tree)
二叉树的特点:
- 每个节点的度
最大为2
- 左子树和右子树是
有顺序
的 - 即使某个节点只有一颗子树,也要
区分左右子树
- 非空二叉树,第i层,最多有
2^(i-1)
个节点 - 高度为h的二叉树,最多有
2^h - 1
个节点
满二叉树
- 所有节点的度都要么为0 ,要么为2。且所有的的叶子节点都在最后一层
- 在同样高度的二叉树中,满二叉树的叶子节点最多、总节点数量最多
完全二叉树
- 一颗有n个节点的完全二叉树,从上到下、从左到右对节点从1开始进行编号,对任意第i个节点:
- 如果i= 1,那么他就是根节点
- 如果i > 1, 它的父节点编号为floor(i / 2)
- 如果 2i <= n, 它的左子节点编号为2i
- 如果2i > n, 它无左子节点
- 如果2i + 1 <= n, 它的右子节点编号为2i + 1
- 如果2i + 1 > n, 它无右子节点
- 如果子节点的个数为0为n0, 子节点个数为1的为n1, 字节数的个数为2的为n2。那么节点数
n = n0 + n1 + n2
, 且n0 = n2 + 1
- 面试题: