创建二叉树

#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);
}
 void main()
 {BiTree bt;
  //Initiate(&bt);//引用
  CreateBiTree(bt);
  PreOrder(bt);
 }
原文地址:https://www.cnblogs.com/QQbai/p/2135259.html