数据结构:二叉树遍历的实现
二叉树的遍历实现
题目:
二叉树的遍历实现
1) 构建一棵二叉树;
2) 递归实现先根序、后根序、中根序遍历;
3) 非递归实现先根序、后根序、中根序遍历;
树的显示在屏幕上需要呈现树状。
/* 二叉树的递归算法:建立二叉树、遍历二叉树 */
#include "stdio.h"
#include "stdlib.h"
/****二叉链树的类型定义****/
typedef char TElemType;
typedef struct BiTNode
{ TElemType data;
struct BiTNode *lchild,*rchild;
} BiTNode, *BiTree;
/********以下为链式队列相关操作*********/
typedef BiTree ElemType;
/* 定义链式队列类型 */
typedef struct QNode
{ ElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct
{ QueuePtr front;
QueuePtr rear;
} LinkQueue;
/* 初始化链式队列 */
void InitQueue(LinkQueue *Q)
{ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
if (!(Q->front)) exit(0);
Q->front->next=NULL; }
/* 销毁链式队列 */
void DestroyQueue(LinkQueue *Q)
{ while (Q->front)
{ Q->rear=Q->front->next;
free(Q->front);