高度树用递归,求结点数最大值用队列
int Depth(BTree T
){
if (T
== Null
){
return 0;
}else{
int ldepth
= Depth(T
-> lchild
);
int rdepth
= Depth(T
-> rchild
);
}
if (ldepth
> rdepth
){
return ldepth
+ 1;
}else{
return rdepth
+ 1;
}
}
int LayerMaxNodes(BTree T
){
BTree QUEUE
[MAXSIZE
], P
;
int MaxNumberLevel
= 1, NxetLevelNumber
;/表示当前层的下一层的节点数
int front
= -1, rear
= 0, last
= 0, curlevel
= 1;
if (T
= NULL) return 0;
QUEUE
[rear
] = T
;
while (front
< rear
){
p
= QUEUE
[++front
];
if (p
->lchild
!= NULL){
QUEUE
[++rear
] = p
->lchild
;
NextLevelNumber
++;
}
if (p
->rlchild
!= NULL){
QUEUE
[++rear
] = p
->rchild
;
NextLevelNumber
++;
}
if (front
== last
){
if ( MaxNumberLevel
< NextLevelNumber
){
MaxNumberLevel
= NextLevelNumber
;
NextLevelNumber
= 0;
}
curlevel
++;
last
= rear
;
}
}
return MaxNumberLevel;
}
int DegreeOfLush(BTree T
){
int lush
;
lush
= Depth(BTree T
) * LayerMaxNodes(BTree T
);
return lush
;
}
转载请注明原文地址: https://mac.8miu.com/read-514801.html