树
树是树形结构的简称。它是一种重要的非线性数据结构。树或者是一颗空树,即不含有任何结点,或者是一颗非空树,即至少含有一个结点。在一颗非空树中,它有且仅有一个称作“根”的结点,其余所有结点被分为m棵互不相交的子树,每棵子树的根结点是整个树根结点的后继,而整个树根结点又是所有子树根结点的前驱。
结点的度和树的度
每个结点具有的子树数或者说后继结点数被定义为该结点的度。而树的度指的是树中所有结点的度的最大值。
结点的层数和树的深度
结点的层数从树根开始定义,根结点为第1层,它的后继结点为第2层,以此类推。树的深度指的是树中所有结点的最大层数。
有序树和无序树
一棵树的各个结点所处的位置如果是按照一定顺序存储的,则为有序树,否则为无序树。一般而言,为了给树赋予一定的意义和便于管理,树中结点的排列都具有一定的规律或者顺序,因此一般都认为树是有序的。
二叉树
二叉树是指树的度为2的有序树。
满二叉树
满二叉树,指的是树的每一层都是满的,即对于一个深度为m的满二叉树来说,它的第n层具有的结点数为2的n-1次方。
完全二叉树
完全二叉树是从满二叉树延伸出来的,其定义是对于深度为m的,有n个结点的二叉树,当且仅当其每一个结点都与深度为m的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
特殊二叉树
二叉搜索树
二叉搜索树又称为二叉排序树。二叉排序树的性质是,若左子树非空,则左子树上所有的结点的关键字都小于根结点的关键字,若右子树非空,则右子树上所有结点的关键字均大于等于根结点的关键字。每个子树又都是一颗二叉搜索树。
堆
堆分为小根堆和大根堆。堆是具有特殊性质的完全二叉树。对于小根堆来说,其性质是根结点的关键字小于等于左孩子和右孩子。对于大根堆来说,其性质是根结点的关键字大于等于左孩子和右孩子。以左右孩子为根的子树又各是一个堆。