给出一个计算二叉树深度的算法在线等 急 高手
解决方案 »
- ******************高难度问题,高手来******************
- 求助:关于rss信息采集
- TreeView 如何取值,急!大家帮邦小弟
- 从 ASP.NET 1.1 转换为 ASP.NET 2.0 转换错误,想转换回来
- 大家帮忙看看那里错了,该怎么处理
- 版本问题?
- 用户名在数据库中有存在,可是总是显示登录失败,怎么回事啊???用vb.net语言创建的
- .net url重定向如何实现?
- 列表框错误?
- 如何可以实现简体中文和繁体中文的相互转换?
- sql2005 round函数随机抽取50条数据
- 用链表实现一个自定义类型可以存储无限大正整数 (比如一个超过1000位的整数)
//主调函数
void Btree ::num()
{ int m=0;
m=depth( root );
cout<<”\n num=” <<m;
} // insert
//利用中序遍历方法,或者先序、后序均可以
int Btree ::depth ( bnode *p )
{ if ( p!=NULL)
{ nl=inordern( p->lch,n);
nr=inordern( p->rch, n);
if ( nl<nr) nr++;
else nl++;
}
if(nl>nr)
return nl;
else
return nr;
}
typedef struct tree//二叉树的定义
{ char data; struct tree *lchild,*rchild; }TREE,*Tree; void create(Tree t)//创建一棵二叉树
{ char ch; scanf("%c",&ch); if(ch=='#') t=NULL;
else { t->data=ch; create(t->lchild); create(t->rchild); }
}
int deep(Tree t)//深度算法
{ if(!t) return 0; else { ld=deep(t->lchild); rd=deep(t->rchild);
if(ld>rd) return rd+1; else return ld+1;
}
void main()//主函数
{ Tree t; create(t); printf("%d\n",deep(t)); }