输入描述:
按照先序遍历序列输入二叉树中数据元素的值,没有的输入0表示。
输出描述:
第一行输出先序遍历序列 第二行输出中序遍历序列 第三行输出后序遍历序列 第四行输出叶子结点的个数。
#include<bits/stdc++.h>
using namespace std;
//基础板子
struct treenode{
//数字用char,表示单字符
char num;
treenode*lchild;
treenode*rchild;
treenode(char data):num(data),lchild(NULL),rchild(NULL){}
};
int counter=0;//叶节点个数
treenode* create(treenode*root){
char ch;
cin>>ch;
if(ch=='0'){
return NULL;
}
root=new treenode(ch);
root->lchild=create(root->lchild);
root->rchild=create(root->rchild);
if(root->lchild==NULL && root->rchild==NULL){
counter++;
}
return root;
}
void PreOrder(treenode*root){
if(root==NULL){
return;
}
cout<<root->num<<" ";
PreOrder(root->lchild);
PreOrder(root->rchild);
}
void InOrder(treenode*root){
if(root==NULL)return;
InOrder(root->lchild);
cout<<root->num<<" ";
InOrder(root->rchild);
}
void PostOrder(treenode*root){
if(root==NULL)return;
PostOrder(root->lchild);
PostOrder(root->rchild);
cout<<root->num<<" ";
}
int main(){
string str1;
treenode*root=NULL;
root=create(root);
PreOrder(root);
cout<<endl;
InOrder(root);
cout<<endl;
PostOrder(root);
cout<<endl;
cout<<counter<<endl;
return 0;
}