计算树的繁茂度-二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
createBiTree(T);
printf("中序遍历的结果为:\n");
printTree(T);
int a, b;
a = treeDepth(T);
b = maxLayer(T);
printf("\n树的深度为:%d\n", a);
printf("树的各层结点数的最大值:%d\n", b);
printf("树的繁茂度为:%d\n", a * b);
p->data = T;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
}
//进队
void deQueue(LinkedQueue &Q, BiTree &T) {
if(Q.rear == Q.front) {
T = NULL;
return ;
}
Queue p = Q.front->next;
if(T) {
return max(treeDepth(T->lChild), treeDepth(T->rChild)) + 1;
} else {
return 0;
}
}
//二叉树各层ຫໍສະໝຸດ Baidu点数的最大值
int maxLayer(BiTree T) {
if(!T) return 0;
LinkedQueue Q;
T = p->data;
Q.front->next = p->next;
if(p == Q.rear) Q.rear = Q.front;
free(p);
}
int max(int a, int b) {
return a>b ? a: b;
}
//求树的深度
int treeDepth(BiTree T) {
//创建二叉树(先序)
void createBiTree(BiTree &T) {
char c = getchar();
if(c == '*') {
T = NULL;
} else {
T = (BiTree)malloc(sizeof(BiTNode));
T->data = c;
createBiTree(T->lChild);
}
initQueue(Q);
int max=0, pre = 1, h = 0, i = 0;
BiTree p = T;
enQueue(Q, p);
while(Q.front != Q.rear) {
while(i < pre) {
deQueue(Q, p);
if(p->lChild) {
h ++;
enQueue(Q, p->lChild);
Q.front = Q.rear = (Queue)malloc(sizeof(QNode));
Q.front->next = NULL;
}
//进队
void enQueue(LinkedQueue &Q, BiTree T) {
Queue p = (Queue)malloc(sizeof(QNode));
createBiTree(T->rChild);
}
}
//打印二叉树(中序)
void printTree(BiTree T) {
if(T) {
printTree(T->lChild);
printf("%c ", T->data);
printTree(T->rChild);
}
}
//初始化一个队列
void initQueue(LinkedQueue &Q) {
} BiTNode, *BiTree;
//定义队列结点
typedef struct QNode {
BiTree data;
struct QNode *next;
} QNode, *Queue;
//定义队列
typedef struct {
Queue front;
Queue rear;
} LinkedQueue;
}
if(p->rChild) {
h ++;
enQueue(Q, p->rChild);
}
i ++;
}
if(h > max) {
max = h;
}
pre = h;
i = 0;
h = 0;
}
return max;
}
void main() {
BiTree T;
printf("请输入二叉树结点的值:\n");
//6.52一棵二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积。
//试编写一算法,求二叉树的繁茂度
#include <stdio.h>
#include <malloc.h>
//定义二叉树结点
typedef struct BiTNode {
char data;
struct BiTNode *lChild, *rChild;
相关文档
最新文档