二叉树一系列操作

时间:2021-12-18 23:31:12

1 创建:这里采用先序遍历的方式

void creat(tree *&p)

{
char x;
cin>>x ;
if(x =='#')return ;
else
p=new tree;
p->data =x; p->left =NULL; p->right =NULL;
creat(p->left );
creat(p->right );

}

2 利用先序遍历统计二叉树的宽度

void count(tree *p,int i)
{
if(p!=NULL)
    {
        num[i]++;//第i层结点数+1
        if(num[i]>Max)Max=num[i];
        count(p->left ,i+1);//T的左孩子,层数+1
        count(p->right ,i+1);//T的右孩子,层数+1
    }

}

3 利用先序遍历统计二叉树的深度

int count(tree *p)
{
if(p==NULL)return 0;
else
{
int l=count(p->left );
int r=count(p->right );
return l>r?l+1:r+1; 

}

4 中序遍历输出

void print(tree *p)
{
if(p!=NULL)
{
print(p->left );
cout<<p->data ;
print(p->right );
}

}

后序遍历输出

void print(tree *p)
{
if(p!=NULL)
{
print(p->left );
print(p->right );
cout<<p->data ;
}

}