回 帖 发 新 帖 刷新版面

主题:求求大家进来解决一下,课程设计:平衡二叉树的判定

课程设计:平衡二叉树的判定
设计要求:给定一个二叉树的先序遍历或后序遍历结果,判定其是否为平衡二叉树.

麻烦各位高手帮帮忙.用C或C++语言都可以.
可以的话发到我邮箱:layuky@126.com

回复列表 (共4个回复)

沙发

同求,知道的朋友,麻烦发到cloudtifa@56.com

板凳

先根据结果建立一个相应的二叉树..然后用下面的函数应该可以了!!!
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 楼

应该还要判定它是否为排序二叉树吧

4 楼

   先建立二叉数,再用两个计数器遍历左右子数,最后比较。[em1]

我来回复

您尚未登录,请登录后再回复。点此登录或注册