编程实现采用二叉链表存储结构创建一个二叉树并进行先序遍历;
//编程实现采用二叉链表存储结构创建一个二叉树并进行先序遍历;
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define NULL 0
typedef char TElemType;
typedef int Status;
typedef struct BiTNode { // 结点结构
TElemType data;
struct BiTNode *lchild, *rchild; // 左右孩子指针
} BiTNode, *BiTree;
//以下是建立二叉树存储结构
Status CreateBiTree(BiTree &T) {
char ch;
scanf("%c",&ch);
if (ch=='#') T = NULL;
else {
//请在此填写代码,将该算法补充完整,参见书本和课件相关章节
T = (BiTree)malloc(sizeof(BiTNode));
(T)->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
} // CreateBiTree
void PreOrder (BiTree T)
{ // 先序遍历二叉树
if (T) {
printf("%4c",T->data); // 访问结点
//请在此填写代码,将该算法补充完整,参见书本和课件相关章节
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
int main()
{
BiTree T;
int s=0,m=0,n=0,d=0;
T=NULL;
printf("\n 请按先序次序输入各结点的值,以#表示空树:\n");
CreateBiTree(T);
printf("二叉树已建立完毕!\n");
printf("\n 先序遍历:");
PreOrder(T);
return 0;
}
测试:
先序:ABDH##I##E#J##CF#K##G##
先序遍历: A B D H I E J C F K G