描述
要求:
1.采用二叉链表的方式进行存储
2.构造一个二叉树类
实现以下算法:
1.统计树中节点个数
2.统计树中叶子节点个数
3.统计树的高度
4.二叉树左右子树的交换
输入
扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树
输出
按要求输出信息(节点个数,叶子节点个数,二叉树的高度,交换之后的前序遍历)
样例输入
abc####
Y
ab##c##
N
样例输出
3
1
3
abc
3
2
2
acb
ps:两组数据输出之间没有换行,跟样例不一样,被坑死。
AC代码:
#include<bits/stdc++.h>
using namespace std;
void Preorder(int root, char data[])
{
if(data[root]!='\0')
{
cout<<data[root] ;
Preorder(2*root,data);
Preorder(2*root+1,data);
}
return;
}
void InOrder(int root, char data[])
{
if(data[root]!='\0')
{
InOrder(2*root,data);
cout<<data[root] ;
InOrder(2*root+1,data);
}
return;
}
void PostOrder(int root, char data[])
{
if(data[root]!='\0')
{
PostOrder(2*root,data);
PostOrder(2*root+1,data);
cout<<data[root] ;
}
return;
}
int n;
int m;
char a[100],ch;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>m>>ch;
a[m]=ch;
}
Preorder(1,a);
cout<<endl;
InOrder(1,a);
cout<<endl;
PostOrder(1,a);
cout<<endl;
return 0;
}