主题:求求大家进来解决一下,课程设计:平衡二叉树的判定
layuky
[专家分:0] 发布于 2006-06-20 09:17:00
课程设计:平衡二叉树的判定
设计要求:给定一个二叉树的先序遍历或后序遍历结果,判定其是否为平衡二叉树.
麻烦各位高手帮帮忙.用C或C++语言都可以.
可以的话发到我邮箱:layuky@126.com
回复列表 (共4个回复)
沙发
cloudtifa [专家分:0] 发布于 2006-06-20 19:35:00
同求,知道的朋友,麻烦发到cloudtifa@56.com
板凳
dgggy521 [专家分:0] 发布于 2006-07-29 11:28:00
先根据结果建立一个相应的二叉树..然后用下面的函数应该可以了!!!
int depth_bt(struct tree *t) /*求二叉树深度*/
{
if(t==NULL) return 0;
return 1+max(depth_bt(t->lchild),depth_bt(t->rchild));
}
int balance(struct tree *t) /*递归[判断是不是平衡二叉树*/
{ int bl,br;
if(t==NULL) return 1; /*空树输出是平衡二叉树*/
bl=depth_bt(t->lchild); /*将左子树的深度赋值给bl*/
br=depth_bt(t->rchild); /*将右子树的深度赋值给br*/
if(bl-br>1||br-bl>1)return 0; /*如果不满足平衡二叉树的定义返回错误信息*/
return balance(t->lchild)&&balance(t->rchild); /*递归调用*/
}
3 楼
海上飞洪 [专家分:520] 发布于 2006-08-02 10:52:00
应该还要判定它是否为排序二叉树吧
4 楼
dorremon1992 [专家分:870] 发布于 2006-08-09 21:46:00
先建立二叉数,再用两个计数器遍历左右子数,最后比较。[em1]
我来回复