#include<iostream>
#include<stdlib.h>
#include<queue>
#define ElemType int
#define MaxSize 100
using namespace std;
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}TNode,*Tree;
int treenum[]={1,2,4,0,0,5,0,0,3,0,0};
int k,h;
void createTree(Tree &T,int &k)
{
ElemType n;
// printf("ÊäÈëΪ0Í£Ö¹£¡\n");
// scanf("%d",&n);
if(treenum[k]==0){
T=NULL;
k++;
}
else{
T=new TNode;
T->data=treenum[k];
k++;
// cout<<"T="<<T->data<<"k="<<k<<endl;
createTree(T->lchild,k);
createTree(T->rchild,k);
}
}
int Height(Tree T)
{
if(T==NULL)
return 0;
else{
int ldep = Height(T->lchild); //×ó×ÓÊ÷¸ß¶È
int rdep = Height(T->rchild); //ÓÒ×ÓÊ÷¸ß¶È
// cout<<"T->data"<<T->data<<"ldep"<<ldep<<"rdep"<<rdep<<endl;
if(ldep>rdep) //È¡Á½Õß´óµÄÄǸöÊý¼ÓÒ»
return ldep+1;
else
return rdep+1;
}
}
//ÿ²ã¿í¶È
void LebelWidth(Tree T,int a[],int h){
if(T!=NULL){
a[h]+=1;
cout<<"data"<<T->data<<"a[h]"<<a[h]<<"h"<<h<<endl;
LebelWidth(T->lchild,a,h+1);
LebelWidth(T->rchild,a,h+1);
}
}
int main()
{
Tree T;
k=0,h=0;
createTree(T,k);
// cout<<"Ê÷µÄ¸ß¶ÈΪ£º"<<Height(T);
int level[MaxSize];
for(int i=0;i<MaxSize;i++)
{
level[i]=0;
}
LebelWidth(T,level,h);
for(int i=0;i<Height(T);i++)
{
cout<<level[i];
}
return 0;
}
统计二叉树的高度和宽度
最新推荐文章于 2023-05-25 16:05:19 发布