树表示一种一对多的关系,如下图所示:
树的结点包含一个数据元素和若干指向其子树的分支。结点拥有的自述数量称为该结点的度。度为0的结点尾叶结点或终端结点。度不为0的结点称为非终端节点或分支结点。除根节点外,分支结点也称为内部结点。树的度为树内部各结点的度的最大值。
节点关系:孩子结点;双亲结点;兄弟结点;祖先结点;子孙结点。
结点的层次从根部开始定义起,根为第一层。树中结点的最大层次为树的深度或高度。
如果将树中结点的各子树看成从左到右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。
森林是m互不相交的树的集合。
树的存储结构:结合顺序存储和链式存储来实现树的表示。表示方法:双亲表示法;孩子表示法;孩子兄弟表示法。
双亲表示法:
二叉树:各个结点最多只有左右两个有序子结点的树。
满二叉树:所有分支节点都存在左子树和右子树,并且所有的叶结点都在同一层。
完全二叉树:
斜树:左斜树;右斜树。
二叉树链表实现:
二叉树遍历:前序遍历(根左右);中序遍历(左根右);后序遍历(左右根);层序遍历(按层次来遍历)。
前序遍历
中序遍历
后序遍历
层序遍历
线索二叉链表