int contwide(Node<int>* root,int h){
int * num = new int[h];
for(int i= 0;i<h;i++)num[i] = 0;
wide(root,num,0);
int max = num[0];
for(int i = 1;i<h;i++){
if(num[i]>max)max = num[i];
}
delete []num;
return max;
}
void wide(BtreeNode<T> * root, int* &h,int level){
if(root == NULL)return;
if(root->L == NULL &&root->R != NULL){
h[level]+=1;
wide(root->R,h,level+1);
}
else if(root->R == NULL && root->L != NULL){
h[level]+=1;
wide(root->L,h,level+1);
}
else if(root->L == NULL && root->R == NULL){
return;
}
else{
h[level]+=2;
wide(root->R,h,level+1);wide(root->L,h,level+1);
}
}
半递归求二叉树宽度
最新推荐文章于 2022-05-01 18:11:39 发布