1. 程式人生 > >二叉樹(建立,遍歷,求深度)

二叉樹(建立,遍歷,求深度)

#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;

}