#include<iostream>
#include<string>
#include<fstream>
using namespace std;
const int capacity=100;
typedef struct Node
{
char data;
struct Node *l;
struct Node *r;
} TreeNode;
class STree
{
private:
int index;
int front,rear,num,index1;
TreeNode *Q[100];
public:
STree()
{
index = -1;
front=rear=-1;
num=index1=0;
}
~STree()
{
}
TreeNode * buildtrees(char *s)
{
index ++;
TreeNode * node = NULL;
if(index < strlen(s))
{
char a = s[index];
if(a == '#')
{
return NULL;
}
else
{
node = (TreeNode *)malloc(sizeof(TreeNode));
node->data = a;
node->l = buildtrees(s);
node->r = buildtrees(s);
}
}
num=index;
return node;
}
void postOrder(TreeNode * root)
{
if(root == NULL)
{
return;
}
cout << root->data << " ";
if(root->l==NULL&&root->r==NULL)
{
index1++;
}
postOrder(root->l);
postOrder(root->r);
}
void print()
{
cout<<"叶子节点的个数为:"<<index1<<endl;
}
int num1(TreeNode *root)
{
if(root==NULL)
{
return 0;
}
int l0=num1(root->l)+1;
int r0=num1(root->r)+1;
return (l0>r0)?l0:r0;
}
};
int main()
{
char * s = "ABD#G###CE##F##";
STree p;
TreeNode * root = p.buildtrees(s);
cout << "前序" << endl;
p.postOrder(root);
cout << endl;
p.print();
int l;
l=p.num1(root);
cout<<"树的深度为:"<<l<<endl;
return 0;
}
#include<string>
#include<fstream>
using namespace std;
const int capacity=100;
typedef struct Node
{
char data;
struct Node *l;
struct Node *r;
} TreeNode;
class STree
{
private:
int index;
int front,rear,num,index1;
TreeNode *Q[100];
public:
STree()
{
index = -1;
front=rear=-1;
num=index1=0;
}
~STree()
{
}
TreeNode * buildtrees(char *s)
{
index ++;
TreeNode * node = NULL;
if(index < strlen(s))
{
char a = s[index];
if(a == '#')
{
return NULL;
}
else
{
node = (TreeNode *)malloc(sizeof(TreeNode));
node->data = a;
node->l = buildtrees(s);
node->r = buildtrees(s);
}
}
num=index;
return node;
}
void postOrder(TreeNode * root)
{
if(root == NULL)
{
return;
}
cout << root->data << " ";
if(root->l==NULL&&root->r==NULL)
{
index1++;
}
postOrder(root->l);
postOrder(root->r);
}
void print()
{
cout<<"叶子节点的个数为:"<<index1<<endl;
}
int num1(TreeNode *root)
{
if(root==NULL)
{
return 0;
}
int l0=num1(root->l)+1;
int r0=num1(root->r)+1;
return (l0>r0)?l0:r0;
}
};
int main()
{
char * s = "ABD#G###CE##F##";
STree p;
TreeNode * root = p.buildtrees(s);
cout << "前序" << endl;
p.postOrder(root);
cout << endl;
p.print();
int l;
l=p.num1(root);
cout<<"树的深度为:"<<l<<endl;
return 0;
}