创建二叉树
#include<stdio.h >
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef struct BiTNode{
char data;
struct BiTNode *lChild,*rChild;
}BiTNode,*BiTree;
//二叉树的初始化函数
int Initiate(BiTree bt)//二叉树的头结点
{ bt = (BiTree )malloc(sizeof(BiTNode));
if(bt==NULL) return 0;
bt->lChild=NULL;
bt->rChild=NULL;
return 1;
}
//创建二叉树
int CreateBiTree(BiTree &t){
// 按先序序列输入二叉树中结点的值(一个字符),#表示空树,
// 构造二叉链表表示的二叉树T。
BiTree T;
char ch;
scanf("%c",&ch);
if(ch=='#') t=NULL; // 建空树
else {
T=(BiTNode *)malloc(sizeof(BiTNode));
if(T==NULL) return ERROR;
T->data = ch; // 生成根结点
t=T;
CreateBiTree(T->lChild); // 递归建(遍历)左子树
CreateBiTree(T->rChild); // 递归建(遍历)右子树
} // else
return OK;
} // CreateBiTree
void PreOrder(BiTree T){
// 采用二叉链表存储结构,visit是对元素操作的应用函数,// 先序遍历二叉树T的递归算法,对每个数据元素调用函数visit。// 最简单的visit函数是输出元素的值。
if(T==NULL) return ;
printf("%c",T->data);
PreOrder(T->lChild);
PreOrder(T->rChild);
}
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef struct BiTNode{
char data;
struct BiTNode *lChild,*rChild;
}BiTNode,*BiTree;
//二叉树的初始化函数
int Initiate(BiTree bt)//二叉树的头结点
{ bt = (BiTree )malloc(sizeof(BiTNode));
if(bt==NULL) return 0;
bt->lChild=NULL;
bt->rChild=NULL;
return 1;
}
//创建二叉树
int CreateBiTree(BiTree &t){
// 按先序序列输入二叉树中结点的值(一个字符),#表示空树,
// 构造二叉链表表示的二叉树T。
BiTree T;
char ch;
scanf("%c",&ch);
if(ch=='#') t=NULL; // 建空树
else {
T=(BiTNode *)malloc(sizeof(BiTNode));
if(T==NULL) return ERROR;
T->data = ch; // 生成根结点
t=T;
CreateBiTree(T->lChild); // 递归建(遍历)左子树
CreateBiTree(T->rChild); // 递归建(遍历)右子树
} // else
return OK;
} // CreateBiTree
void PreOrder(BiTree T){
// 采用二叉链表存储结构,visit是对元素操作的应用函数,// 先序遍历二叉树T的递归算法,对每个数据元素调用函数visit。// 最简单的visit函数是输出元素的值。
if(T==NULL) return ;
printf("%c",T->data);
PreOrder(T->lChild);
PreOrder(T->rChild);
}
void main()
{BiTree bt;
//Initiate(&bt);//引用
CreateBiTree(bt);
PreOrder(bt);
}
{BiTree bt;
//Initiate(&bt);//引用
CreateBiTree(bt);
PreOrder(bt);
}