《数据结构 - 树》概念
一:树 结构概念?
- 树(Tree) 是 n(n >= 0 ) 个结点的有限集合。
- n = 0 时,为空树。
- 在任意一棵非空树中
- 有且只有一个为根(root)的结点
- 当 n > 1 时,其余结点可分为m (m > 0)个互不相交的有限集中,其中每一个集合本身就是一棵树,并称为根的子树(Subtree)。
- 注意
- n > 0 时候,根节点唯一,不可能存在多个根节点
- m > 0 时候,子树个数没有限制,但他们一定是互相不交互的
- 例如下图,不是树结构
-
二:树 结点分类?
- 结点拥有的子树称为结点的度(Degree)
- 度为0的结点称为叶结点(Leaf)
- 度不为0的称为分支结点(也叫内部节点,根结点除外)
- 树的度,是结点度的最大值
-
三: 树 结点间的关系?
- 结点的子树根称为该结点的孩子。
- 同理,该节点称为孩子的双亲。
- 同一个双亲的孩子之间互称兄弟
-
四: 树 的深度?
- 结点的层次从 根开始 定义层级
- 数中结点最大层次称为树的深度(Depth)或者高度。
-
五:二叉树
- 定义:是 n (n > 0) 个结点的有限结合,该集合或者为空集,或者由一个根节点和两颗互不相交的分别称为根结点的左子树和右子树的树组成。
- 特点
- 每个节点最多两颗子树,所以二叉树中不存在 度 大于 2 的结点。(没有子树/一个子树也是可以的)
- 左子树和右子树 是有顺序的,不能颠倒。
- 即使树中某结点只有一棵子树,也需要区分是左子树还是右子树。
- 性质
- 在 二叉树 的 第 i 层上至多有 2(i-1)个结点
- 在 深度 为 k 的二叉树至多有 2(k)-1个结点
六:二叉树的基本形态
- 空二叉树
- 只有一个根结点
- 根节点只有左子树
- 根节点只有右子树
- 根节点既有左子树,也有右子树
-
七:特殊的二叉树
- 斜树
- 所有的结点都只有左子树的,叫做左斜树。
- 所有的结点都只有右子树的,叫做右斜树。
- 如上图2和图5
- 满二叉树
- 在二叉树中,如果所有分支结点都存在左子树和右子树,并且所有的叶子都在同一层上,称为 满二叉树。
-
- 完全二叉树
- 满二叉树一定是一棵完全二叉树。但是完全二叉树不一定是满的。
- 满二叉树是完全二叉树的特例,因为满二叉树已经满了,而完全并不代表满。
- 满指的是出了叶子节点外每个节点都有两个孩子,而完全的含义则是最后一层没有满,并没有满。
-