#include <bits/stdc++.h>
using namespace std;
struct node
{
char data;
node *left, *right;
};
node *creat();
char _string[60];
int i = 0, num = 0;
void Inorder(node *root);
void Postorder(node *root);
int high(node *root);
int main()
{
node *root;
scanf("%s", _string);
i = 0;
root = creat();
Inorder(root);
cout << endl;
Postorder(root);
cout << endl;
cout << num << endl;
cout << high(root) << endl;
return 0;
}
node *creat()
{
node *root = new node;
if(_string[i] == ',')
{
root = NULL;
i ++;
}
else
{
root -> data = _string[i];
i ++;
root -> left = creat();
root -> right = creat();
}
return root;
}
void Inorder(node *root)
{
if(root)
{
Inorder(root -> left);
cout << root -> data;
Inorder(root -> right);
}
}
void Postorder(node *root)
{
if(root)
{
if(!root -> left && !root -> right)
{
num++;
}
Postorder(root -> left);
Postorder(root -> right);
cout << root -> data;
}
}
int high(node *root)
{
if(root)
{
int lifthigh = high(root -> left);
int righthigh = high(root -> right);
return max(lifthigh, righthigh)+1;
}
else return 0;
}
SDUT 2136 数据结构实验之二叉树的建立与遍历
最新推荐文章于 2021-05-28 22:03:08 发布