树(Tree)是n(n>=0)个结点的有限集合,当n=0时,为空树;n>0时,为非空树。任何一棵非空树,满足:
1)有且仅有一个称之为根的结点;
2)除根节点以外的其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3……,Tm,其中每一棵集合本身就是一棵树,并且称为根的子树。(ShuTree)

往往使用递归实现。

结点--结点包含数据元素及若干指向子树的分支信息。
结点的度--结点拥有的子树个数。
树的度--树中结点的最大度数。
终端结点--度为0的结点,又称为叶子。
分支结点--度大于0的结点。除了叶子都是分支结点。
内部结点--除了树根和叶子都是内部结点。
结点的层次--从根结点到该结点的层数(根结点为第一层)。
树的深度(或高度)--指所有结点中的最大层数。
路径-- 树中两个结点之间的所经过的结点序列。
路径长度--两个结点之间路径上经过的边数。
双亲、孩子--结点的子树的根称为该结点的孩子。
兄弟--有相同父节点的子结点之间
堂兄弟--父节点为兄弟结点的子结点之间
祖先--即从该结点达到树根经过的所有结点,称为该结点的祖先。
子孙--结点的子树的所有结点都称为该结点的子孙。
有序树--结点的各子树从左至右有序,不能互换位置。
无序树--结点各子树可互换位置。
森林--由m(m>=0)棵不相交的树组成的集合。(0棵树也是森林哟!)

树的存储结构

顺序存储

父节点表:储存下标
子结点表:找子节点容易,但是浪费空间
父子结点表:既有父节点域,也有子结点域。

链式存储

当一些树的存储比较困难时,往往将其转化为二叉树存储。

二叉树

二叉树(Binary Tree)是由n个结点构成的集合,它或为空树,或为非空树,对于非空树T满足:
1)有且仅有一个被称为根的结点。
2)除了根节点以外,其余结点分别为两个互不相交的子集T1和T2,称为T的左子树和右子树。且T1和T2本身就是二叉树。