二叉樹(建立,遍歷,求深度)
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
char data;
struct node *lchild,*rchild;
}BSTree;
void Initiate(BSTree** bt)
{
*bt=NULL;
}
/BSTree Creat(BSTree *lbt,BSTree *rbt)
{
int x;
scanf("%d",&x);
BSTree *p;
p=(BSTree *)malloc(sizeof(BSTree));
p->data=x;
p->lchild=lbt;
p->rchild=rbt;
return p;
}
*/
/*void InsertL(,)
{
}
void InsertR(,)
{
}
void DeleteL(,)
{
}
void DeleteR(,)
{
}
void search(,)
{
}
void Traverse()
{
}
*/
void CreatBinTree(BSTree* * T)
{
char n;
printf(“input data\n”);
scanf("%c",&n);
getchar();
if(n==‘0’)
*T=NULL;
else
{
T=(BSTree)malloc(sizeof(BSTree));
(*T)->data=n;
CreatBinTree(&(*T)->lchild);
CreatBinTree(&(*T)->rchild);
}
}
void PreOrder(BSTree* bt)
{
if(bt==NULL)
return ;
printf("%c",bt->data);
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
int DeepBSTree(BSTree* T)
{
int ldeep,rdeep;
if(T==NULL)
return 0;
else
{
ldeep=DeepBSTree(T->lchild);
rdeep=DeepBSTree(T->rchild);
if(ldeep>rdeep) return ldeep+1; else return rdeep+1; }
}
int main()
{
BSTree *t;
int Deep;
CreatBinTree(&t);
PreOrder(t);
Deep=DeepBSTree(t);
printf("\n");
printf("%d",Deep);
return 0;
}