参考严蔚敏/吴伟民版《数据结构-C语言版》
-
顺序存储表示的话其实就是数组表示,只有完全二叉树能充分利用到存储空间
-
链式存储结构
// 二叉树节点的表示
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild , *rchild; //左右孩子指针
}BiTNode, *BiTree;
- 先序遍历二叉树算法
// 根->左->右
Status PreOrderTraverse(BiTree T, Status (* Visit)(TElemType e){
// Visit是对数据元素操作的应用函数
if(T){
if(Visit(T->data)){
if(PreOrderTraverse(T->lchild, Visit)){
if(PreOrderTraverse(T-rchild, Visit))
return OK;
}
return ERROR;
}
}else{
return OK;
}
}
- 中序遍历
Status InOrderTraverse(BiTree T, Status (*Visit)(TElemType e)){
// 非递归
InitStack(S);Push(S, T); //根指针进栈
while(!StackEmpty(S)){
while(GetTop(S,p) && p) Push(S, p->lchild);
Pop(S,p);
if(!StackEmpty(S)){
Pop(S, p);
if(!Visit(p->data)) return ERROR;
Push(S, p