/* ÏÈÐò±éÀú¶þ²æÊ÷*/
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