二叉树的定义
二叉树(Binary Tree)是n>0个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵不相交的分别被称为左子树和右子树组成。
·不存在度大于2的结点;
·左右子树是有序的,次序不能任意的颠倒。
二叉树的链表存储方式
二叉树的每个结点最多有两个孩子,所以设计一个数据域和两个指针域,我们称为二叉链表。
二叉链树的结点定义为
template<typename T>
struct BiTNode
{
T data;
BiTNode<T> *lchild, *rchild;
BiTNode(BiTNode<T>* pl = NULL, BiTNode<T>* pr = NULL)
{
lchild = pl;
rchild = pr;
}
};
为了方便介绍是如何生成一颗二叉树的,我们先来简单介绍一下三序遍历。
①前序遍历
先访问根节点,然后前序遍历左子树,再前序遍历右子树
前序遍历:ABDGHCEIF
②中序遍历
从根节点开始(先不访问),中序遍历根节点的左子树,然后访问根结点,最后中序遍历右子树。
中序遍历:GDHBAEICF
③后序遍历
从左到右先叶子结点后根结点的方式遍历左右子树,最后访问根结点。
后序遍历:GHDBIEFCA
接着看回代码
//二叉树
#ifndef BINARYTREE_