一棵二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积
试写一算法,求二叉树的繁茂度 #include #include #define MaxSize 100 typedef char ElemType; typedefstruct node { ElemType data; //数据元素 struct node *lchild; //指向左孩子结点 struct node *rchild; //指向右孩子结点 } BTNode; voidCreateBTNode(BTNode * &b,char *str) { BTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; charch; b=NULL; //建立的二叉树初始时为空 ch=str[j]; while (ch
='\0') //str 未扫描完时循环 { switch(ch) { case '(':top++;St[top]=p;k=1; break; //为左孩子结点 case ')':top--;break; case ',':k=2; break; // 为 孩 子 结点右结点 default:p=(BTNode *)malloc(sizeof(BTNode)); p->data=ch;p->lchild=p->rchild=NULL; if (b==NULL) //*p 为二叉树的根结点 b=p; else //已建立二叉树根结点 { switch(k) { case 1:St[top]->lchild=p;break; case 2:St[top]->rchild=p;break; } } } j++; ch=str[j]; } } voidDispBTNode(BTNode *b) { if (b
=NULL) { printf("%c",b->data);