## 数据结构（算法）-树 原

ashuo

``````#include <iostream>
#include <malloc.h>

using namespace std;

#define MaxSize 100
typedef char ElemType;

typedef struct node{
ElemType data;
struct node *left ,*right;
} BTree;

//先序
void preorder(BTree * bt){
if(bt != NULL){
printf("%c",bt->data);
preorder(bt->left);
preorder(bt->right);

}
}

//中序
void inoder(BTree * bt){
if(bt != NULL){
inoder(bt->left);
printf("%c",bt->data);
inoder(bt->right);
}
}

//后序

void postorder(BTree *bt){
if(bt != NULL){
postorder(bt->left);
postorder(bt->right);
printf("%c",bt->data);
}
}

void createTree(BTree **bt, char * str){
BTree * stack[MaxSize] ,*p;
int top=-1 , k, j=0;

char ch;
*bt =NULL;
ch=str[j];
while(ch !='\0'){
switch(ch){
case '(' :
top++;
stack[top]=p;
k=1;
break;
case ')' :
top--;
break;
case ',' :
k=2;
break;
default:
p=(BTree *)malloc(sizeof(BTree));
p->data=ch;
p->left=p->right=NULL;
if(*bt ==NULL){
*bt =p;
}else{
switch(k){
case 1:
stack[top]->left=p;
break;
case 2:
stack[top]->right=p;
break;
}
}
}
j++;
ch=str[j];
}
}

//树的高度
int BTreeDepth(BTree * bt){
int leftdep ,rightdep;
if(bt ==NULL){
return 0;
}else {
leftdep=BTreeDepth(bt->left);
rightdep=BTreeDepth(bt->right);
if(leftdep > rightdep){
return leftdep +1;
}else {
return rightdep +1;
}
}
}

//树的叶子结点

int leafCout(BTree * bt){
if(bt == NULL){
return 0;
}else if (bt ->left == NULL && bt ->right ==NULL){
return 1;
}else{
return leafCout(bt->left) + leafCout(bt ->right) +1 ;
}
}

void main(){
BTree *b;
char *s ="A(B(D,E(H,I)),C(G))";
createTree(&b,s);
printf("\n 先序遍历：");
preorder(b);

printf("\n 中序遍历：");
inoder(b);

printf("\n 后序遍历：");
postorder(b);

printf("\n树的高度：%d\n",BTreeDepth(b));

printf("树的叶子结点：%d\n",leafCout(b));

}

``````

``````

### ashuo

2018/09/04
0
0

程序 = 数据结构 + 算法 　　——图灵奖得主，计算机科学家N.Wirth(沃斯) 　　 　　作为程序员，我们做机器学习也好，做python开发也好，java开发也好。 　　有一种对所有程序员无一...

java进阶架构师
2018/10/25
0
0

2018/04/12
0
0

2013/12/25
140
0

2018/06/29
0
0

XML

stars永恒
14分钟前
0
0
RabbitMQ学习（2）

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时，首先......

14分钟前
1
0
day23：curl判断网站状态码|打包压缩家目录小于5k文件|

1、写一个shell 脚本,通过curl -l 返回的状态码来判断访问的网站是否正确(状态码为 200 则正常)； 首先如何过滤出来 状态码了； curl -I http://www.yuanhh.com/index.php 2>/dev/null|head...

36分钟前
1
0

Jack088
48分钟前
3
0

.下载安装 　　执行下面两个命令： 　　　　下载：go get github.com/Go-SQL-Driver/MySQL 　　　　安装：go install github.com/Go-SQL-Driver/MySQL 　 怎么判断go-sql-driver 安装成功 ...

dragon_tech
56分钟前
0
0