#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstdlib>
using namespace std;
typedef struct node *BinTree;
struct node{
BinTree left;
BinTree right;
int date;
};
void cengxubianli(BinTree p){
if(p==NULL) exit(-1);
queue<BinTree> q;
BinTree bt;
q.push(p);
printf("层序遍历:\n");
while(!q.empty()){
bt=q.front();
q.pop();
printf("%d ",bt->date);
if(bt->left) q.push(bt->left);
if(bt->right) q.push(bt->right);
}
printf("\n\n");
}
void zhongxubianli(BinTree p){
if(p){
zhongxubianli(p->left);
printf("%d ",p->date);
zhongxubianli(p->right);
}
}
void yezishu(BinTree p){
if(p){
if(p->right==NULL && p->left==NULL)
printf("%d ",p->date);
yezishu(p->left);
yezishu(p->right);
}
}
int shugao(BinTree p){
int HL,HR,MAXL;
if(p){
HL=shugao(p->left);
HR=shugao(p->right);
MAXL=max(HL,HR);
return (MAXL+1);
}
else return 0;
}
int main(){
BinTree bt,t;
queue <BinTree> q;
int x;
scanf("%d",&x);
if(x){
bt=(struct node *)malloc(sizeof(struct node));
bt->date=x;
q.push(bt);
}
else exit(-1);
while(!q.empty()){
t=q.front();
q.pop();
scanf("%d",&x);
if(x){
t->left=(struct node *)malloc(sizeof(struct node));
t->left->date=x;
q.push(t->left);
}
else t->left=NULL;
scanf("%d",&x);
if(x){
t->right=(struct node *)malloc(sizeof(struct node));
t->right->date=x;
q.push(t->right);
}
else t->right=NULL;
}
cengxubianli(bt);
printf("中序遍历:\n");
zhongxubianli(bt);
printf("\n\n");
printf("求叶子数:\n");
yezishu(bt);
printf("\n\n");
printf("求树高:\n");
printf("%d\n\n",shugao(bt));
}
简易二叉树
最新推荐文章于 2017-10-07 17:52:50 发布