二叉链表
二叉树每个结点最多两个孩子,所以设计二叉树的结点结构是考虑两个指针指向该结点的两个孩子
另外还可以增加指针指向该结点的双亲结点,那这时三个指针的链表叫做三叉链表
#include<iostream>
typedef char Elemtype;
typedef struct BiTNode {
Elemtype data; //数据域
BiTNode *lchild, *rchild; //指向该节点的左右孩子指针
}BiTNode,*BiTree; //二叉树结点结构
//先序遍历
void PreOrder(BiTree T) {
if (T) {
printf("%c", T->data); //访问根结点
PreOrder(T->lchild); //递归遍历左子树
PreOrder(T->rchild); //递归遍历右子树
}
}
//中序遍历
void InOrder(BiTree T) {
if (T) {
InOrder(T->lchild); //递归遍历左子树
printf("%c", T->data); //访问根结点
InOrder(T->rchild); //递归遍历右子树
}
}
//后续遍历
void PostOrder(BiTree T) {
if (T) {
PostOrder(T->lchild); //递归遍历左子树
PostOrder(T->rchild); //递归遍历右子树
printf("%c", T->data); //访问根结点
}
}