- 树与二叉树
树
- 树(tree):一种非线性结构。
- 树形数据结构特征:所有数据元素之间的关系有非常明显的层次关系(层次结构)。非常像大自然的树枝结构。
- 根结点(简称 根 ):有且仅有一个没有前件的结点。
eg:图中,A为根结点。 - 叶子结点:没有后件的结点。
eg:图中,E、F、G、H、I、J为叶子结点。 - 父结点:每个结点只有一个前件。
eg:图中,因为A没有前件,所以A没有父结点;A为B、C、D的父结点;C为G的父结点。 - 子结点:每个结点有多个后件。
eg:图中,B、C、D为A的子结点;G为C的子结点。 - 结点的度:在树中所拥有后件的个数。
eg:图中,根结点A的度为3;结点B的度为2;结点C的度为1;叶子结点的度为0。 - 树的度:所有结点中度数最大的结点的度。
eg:图中,树的度为3。 - 树的深度:树的最大层数。
eg:图中,树的深度为3。 - 子树:树中以某个结点的一个子结点为根构成的树。
eg:图中,A有3颗子树,分别为B、C、D为根结点;结点C有1颗子树,为G为根结点。
⚠️:叶子结点没有子树。
二叉树
- 二叉树(Binary Tree):一种非线性数据结构。
特点:
- 每个结点最多只有两颗子树,分别称为左子树和右子树。🌟
eg:当根结点为A时,则左子树的结点有B、D、G、H,而右子树的结点有C、E、F、I、J ; 当根结点为B时,非空左子树(D、G、H)和 空的右子树。 - 二叉树属于树的一种类型之一。
- 每个结点的度最大为2。
- 所有子树(左子树或右子树)均称为二叉树。
- 类别:满二叉树、完全二叉树。
满二叉树
- 特点:
- 所有分支结点都存在左子树和右子树。
- 所有叶子结点都在同一层上。
左图:深度为2的满二叉树。右图:深度为3的满二叉树
完全二叉树(Complete Binary Tree)
- 特点:
- 除最后一层外,每一层的结点数均为2(最大的个数)。
- 最后一层上只缺少右边的若干个结点。