一,二叉树的定义
二叉树是一种特殊形式的树结构,二叉树的特点是每个节点最多有两棵子树。
二叉树(Binary tree )是这样的数结构:它或者是空,或者是由一个根节点加上两棵分别称为左子树和右子树的互不相交的二叉树组成。显然这个定义是递归形式的。
二叉树的一般存储结构采用的是链式存储结构。直观地讲就是将二叉树的各个结点(根节点,叶子节点等)用链表的形式连接在一起。这样通过特定的算法就可以对二叉树中的每个节点进行操作。链式存储的二叉树结点的内存结构如图:
如图,二叉树有三个域,其中lchild 和 rchild 为指针域,用来指向该结点的左孩子和右孩子,data为数据域,用来存放该结点的数据。定义二叉树的结点:
typedef struct BiTNode
{
char data; /*结点的数据域*/
struct BiTNode *lchild,*rchild;/*指向左孩子和右孩子*/
}BiTNode ,*BitTree;
上述代码定义了一个二叉树的结点类型BiTNode ,也就是说二叉树的每一个结点都属于BiTNode 类型。另外定义了一个BitTree 类型,它就是指向BiTNode 类型数据(对象)的指针类型 变量声明 BitTree t
二,二叉树的遍历
假设我们已经建立