树的建立

1代码

···
/#include /
/#include <stdio.h>/
/#include /
using namespace std;
typedef struct node BTree;
typedef struct node{
char data;
BTree lchild;
BTree rchild;
}TNode;
BTree CreateBTree(string str,int i);//创建二叉树
void PreOrder(BTree bt);//先序遍历
void PostOrder(BTree bt);//后序遍历
void InOrder(BTree bt);//中序遍历
int main(){
BTree bt;
string line;
cin>>line;
int i;
cin>>i;
bt=CreateBTree(line,i);
printf("先序遍历:");
PreOrder(bt);
printf("\n中序遍历:");
InOrder(bt);
printf("\n后序遍历:");
PostOrder(bt);
return 0;
}
void PreOrder(BTree bt){
if(bt){
printf("%c ",bt->data);
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
void InOrder(BTree bt){
if(bt){
InOrder(bt->lchild);
printf("%c ",bt->data);
InOrder(bt->rchild);
}
}
void PostOrder(BTree bt){
if(bt){
PostOrder(bt->lchild);
PostOrder(bt->rchild);
printf("%c ",bt->data);
}
}
BTree CreateBTree(string str,int i){
int len;
BTree bt;
bt=new TNode;
len=str.size();
if(i>len-1 || i<=0) return NULL;
if(str[i] == '#') return NULL;
bt->data = str[i];
bt->lchild = CreateBTree(str,2
i);
bt->rchild = CreateBTree(str,2*i+1);
return bt;
}
···

2.运行截图

猜你喜欢

转载自www.cnblogs.com/afairyfairy/p/10777004.html