正在加载图片...
void insert data( int x) /*如何生成二叉排序树?参见教材P43C程序* s-(test" )malloc(m) s->datax s->lchild=NULL s->rchild=NULL: if(root)root=s; return; while(p) /*如何接入二叉排序树的适当位置* i=p if(p->data==x)fprintf("data already exist! In"); return; i else if(x<p->data)p=p->lchild; else p=p->rchild if(x<q->data)q->lchild=s nt depth(iuyu*roo)/*统计层数* Hint d, p /注意每一层的局部变量d,p都是各自独立的中 if(root= NULL)return(p),*找到叶子之后才开始统计* d=depth(root->lchild) if(d>p)p=d; 向上回朔时,要挑出左右子树中的相对大的那个深度值* d=depth(root->rchild) if(d>p)p=d: p=p+1 eturn(p) void maino *先生成二叉排序树,再调用深度遍历递归函数进行统计并输出* fint i,x rootNUlL /*千万别忘了赋初值给root!* dofprintf("please input data%d: " 1) scanf("%d", &x) *从键盘采集数据,以-9999表示输入结束* if(x==9999){ e a printf("InNow output depth value=%dIn", depth(root); return; /*调用插入数据元素的函数* 执行结果:9 void insert_data(int x) /*如何生成二叉排序树?参见教材 P43C 程序*/ { liuyu *p,*q,*s; s=(test*)malloc(m); s->data=x; s->lchild=NULL; s->rchild=NULL; if(!root){root=s; return;} p=root; while(p) /*如何接入二叉排序树的适当位置*/ {q=p; if(p->data==x){printf("data already exist! \n");return;} else if(x<p->data)p=p->lchild; else p=p->rchild; } if(x<q->data)q->lchild=s; else q->rchild=s; } int depth(liuyu*root) /*统计层数*/ {int d,p; /*注意每一层的局部变量 d,p 都是各自独立的*/ p=0; if(root==NULL)return(p); /*找到叶子之后才开始统计*/ else{ d=depth(root->lchild); if(d>p) p=d; /*向上回朔时,要挑出左右子树中的相对大的那个深度值*/ d=depth(root->rchild); if(d>p)p=d; } p=p+1; return(p); } void main() /*先生成二叉排序树,再调用深度遍历递归函数进行统计并输出*/ {int i,x; i=1; root=NULL; /*千万别忘了赋初值给 root!*/ do{printf("please input data%d:",i); i++; scanf("%d",&x); /*从键盘采集数据,以-9999 表示输入结束*/ if(x==-9999){ printf("\nNow output depth value=%d\n", depth (root)); return; } else insert_data(x);} /*调用插入数据元素的函数*/ while(x!=-9999); return;} 执行结果:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有