/*****************************************
Author :Crazy_AC(JamesQi)
Time :2015
File Name :
*****************************************/
// #pragma comment(linker, "/STACK:1024000000,1024000000")
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <sstream>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>
using namespace std;
#define MEM(a,b) memset(a,b,sizeof a)
#define pk push_back
template<class T> inline T Get_Max(const T&a,const T&b){return a < b?b:a;}
template<class T> inline T Get_Min(const T&a,const T&b){return a < b?a:b;}
typedef long long ll;
typedef pair<int,int> ii;
const int inf = 1 << 30;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int x,y;
struct bitree{
char data;
struct bitree *l,*r;
}root;
void Built_Bitree(bitree *&rt){
char c;
scanf("%c",&c);
if (c == '\n') return ;
if (c == ',')
rt = NULL;
else{
rt = new bitree;
rt->data = c;
Built_Bitree(rt->l);
Built_Bitree(rt->r);
}
return ;
}
void Zhong(bitree *p){
if (p){
Zhong(p->l);
printf("%c",p->data);
Zhong(p->r);
}
return ;
}
void Hou(bitree *p){
if (p){
Hou(p->l);
Hou(p->r);
printf("%c",p->data);
if (p->l == NULL && p->r == NULL)
x++;
}
return ;
}
int depth(bitree* p){
int ld,rd;
if (!p) return 0;//底部深度为0;
ld = depth(p->l) + 1;
rd = depth(p->r) + 1;
return Get_Max(ld,rd);
}
int main(){
// ios::sync_with_stdio(false);
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
bitree *N;
Built_Bitree(N);
Zhong(N);
printf("\n");
Hou(N);
printf("\n");
printf("%d\n%d\n",x,depth(N));
return 0;
}
/*
输入:
abc,,de,g,,f,,,
输出:
cbegdfa
cgefdba
3
5
*/
二叉树的建立&中序&后序&深度
最新推荐文章于 2022-06-12 20:17:28 发布