¶þ²æÊ÷¼°ÆäÓ¦Óã¨Ëã·¨ÓëÊý¾Ý½á¹¹¿Î³ÌÉè¼Æ£© ÏÂÔØ±¾ÎÄ

/* ÏÈÐò±éÀú¶þ²æÊ÷*/

void PreOrderTraverse(BiTreeLink T) { if (T)

{ printf(\

PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } }

/*Çó¶þ²æÊ÷½ÚµãËùÔÚ²ã´ÎÊý*/

int CengciTree(BiTreeLink T,char c) {

int n=1,front=0,rear=0,flag; BiTreeLink queue[MAXSIZE];// if(!T) {

printf(\Ê÷Ϊ¿Õ!\\n\ return n; }

if(T->data==c) return n;

queue[rear++]=T->lchild; queue[rear++]=T->rchild; queue[rear++]=T; n++;

while((front+1)%MAXSIZE!=rear) {

flag=0;

if(queue[front]&&queue[front]->data==c) return n; if(queue[front]==T) {

n++; flag=1; }

else if(queue[front]) {

queue[rear]=queue[front]->lchild; rear=(rear+1)%MAXSIZE;

queue[rear]=queue[front]->rchild; rear=(rear+1)%MAXSIZE; }

if(flag) {

queue[rear]=T;

rear=(rear+1)%MAXSIZE; }

wilyes11ÊÕ¼¯ ²©¿Í(ÓëѧϰÎÞ¹Ø)£ºhttp://blog.sina.com.cn/u/1810231802

front=(front+1)%MAXSIZE; }

printf(\ÔªËØ%c²»´æÔÚ¡£\\n\ return -1; }

/****Ö÷º¯Êý****/ int main() {

BiTreeLink T; int c=0; char x;

printf(\ÇëÊäÈë½Úµã\\n\ printf(\ÏÈÐò:\ printf(\ÇëÊäÈë½Úµã£º\ getchar();

printf(\ÇëÊäÈëÒª²éѯµÄ×Ö·û£º\ scanf(\

printf(\ËùÔÚ²ã´Î=\\n\\n\ system(\ return 0; }

3¡¢ÒÔͬѧ¼ΪÀý£¬ÀûÓöþ²æÊ÷´æ´¢½á¹¹£¬ÊµÏÖ½¨Á¢¡¢²éÕÒ¡¢ÐÂÔö¡¢É¾³ýµÈ¹¦ÄÜ¡£ #include \#include \#include \

/****¶þ²æÁ´Ê÷µÄÀàÐͶ¨Òå****/ typedef struct Info{

char name[20]; //ÐÕÃû char date[11]; //ÉúÈÕ char phone[12]; //µç»° char StudentNum[11];//ѧºÅ }DataType;

typedef struct Node { DataType data;

struct Node *left,*right; }BTNode, *PBTNode,*BiTree; /*****²åÈ루×óº¢×Ó£©****/

PBTNode InsertLeft(PBTNode T,DataType x) { PBTNode p;

if(!T) return NULL; if(T->left ==NULL)

{ p=(PBTNode)malloc(sizeof(BTNode)); p->data=x; p->left =NULL;

wilyes11ÊÕ¼¯ ²©¿Í(ÓëѧϰÎÞ¹Ø)£ºhttp://blog.sina.com.cn/u/1810231802

p->right =NULL; T->left =p; return p;} return NULL; }

/*****²åÈ루ÓÒº¢×Ó£©****/

PBTNode InsertRight(PBTNode T,DataType x) { PBTNode p;

if(!T) return NULL; if(T->right ==NULL)

{ p=(PBTNode)malloc(sizeof(BTNode)); p->data=x; p->left =NULL; p->right =NULL; T->right =p; return p;} return NULL; }

/*****²åÈë****/

void InsertChild(PBTNode T,DataType x)

{ if (T->left==NULL && T->right==NULL && !strcmp(T->data.name ,\ÎÞ\ {T->data=x;}

else if (InsertLeft(T,x)) return; else{

if (InsertRight(T,x)) return; else InsertChild(T->left ,x);} }

/****½¨Á¢¶þ²æÊ÷****/

void CreateBiTree(DataType *items,BiTree *T) { int i;

printf(\±¾³ÌÐòͨ¹ýÔ¤ÖÃÊý×齨Á¢¶þ²æÊ÷\\n\ (*T)=(PBTNode)malloc(sizeof(BTNode)); (*T)->left=NULL; (*T)->right=NULL; (*T)->data=items[0]; for(i=1;i<4;i++)

{ InsertChild(*T,items[i]);} }

/****ÏÈÐò±éÀú¶þ²æÊ÷****/

void PreOrderTraverse(BiTree T) { if (T)

{printf(\ÐÕÃû\\t\\tѧºÅ\\t\\tÉúÈÕ\\t\\tµç»°\\n\

printf(\.date,T->data.phone);

wilyes11ÊÕ¼¯ ²©¿Í(ÓëѧϰÎÞ¹Ø)£ºhttp://blog.sina.com.cn/u/1810231802

PreOrderTraverse(T->left); PreOrderTraverse(T->right); } }

/****²éÕÒ¶þ²æÊ÷****/

PBTNode SearchTree(BiTree T,char *ch) { PBTNode flag=NULL; if (T)

{ if(!strcmp(T->data.name,ch)) {

printf(\e,T->data.phone);

flag=T; return flag; }

else flag=SearchTree(T->left,ch); if(flag) return flag; else

flag=SearchTree(T->right,ch); }

return flag; }

/****²éÕÒ¸¸Ç×½Úµã****/

PBTNode SearchFather(PBTNode r,BiTree T,int *flag) { PBTNode p=NULL; if(T)

{ if(T->left==r)

{(*flag)=0; p=T;return p;}//flag=0±íʾ×óº¢×ӵĸ¸Ç× else if(T->right==r)

{(*flag)=1; p=T;return p;} else

{p=SearchFather(r,T->left,flag); if(p) return p;

else p=SearchFather(r,T->right,flag);} }

return p; }

/****Ð޸Ķþ²æÊ÷****/

void ModifyTree(BiTree T)

{ char ch[20],Mod[12]; PBTNode ModifyNode; int caseflag; printf(\ÇëÊäÈëÒªÐÞ¸ÄÐÅÏ¢µÄÐÕÃû:\ ModifyNode=SearchTree(T,ch); if(!ModifyNode)

printf(\²éÕÒµÄÐÕÃû²»´æÔÚ\\n\ else

{while(1){

wilyes11ÊÕ¼¯ ²©¿Í(ÓëѧϰÎÞ¹Ø)£ºhttp://blog.sina.com.cn/u/1810231802