二叉树遍历
#include<cstdio>
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct BrinaryTreeNode{
char data;
struct BrinaryTreeNode *lchild;
struct BrinaryTreeNode *rchild;
}BiTNode, *BiTree;
BiTNode *Build_Node(char x){
BiTNode * node = (BiTNode *)malloc(sizeof(BiTNode));
node->data=x;
node->lchild=NULL;
node->rchild=NULL;
return node;
}
BiTNode *BiT_create(char *a,int n,int *pi){
if(a[*pi]=='#'||*pi>n){
(*pi)++;
return NULL;
}
BiTNode *dst=Build_Node(a[*pi]);
(*pi)++;
dst->lchild=BiT_create(a,n,pi);
dst->rchild=BiT_create(a,n,pi);
return dst;
}
void BiT_pre(BiTNode *root){
if(root==NULL){
return;
}
cout<<root->data<<" ";
BiT_pre(root->lchild);
BiT_pre(root->rchild);
}
void BiT_in(BiTNode *p){
if(p==NULL){
return;
}
BiT_in(p->lchild);
cout<< p->data<<" ";
BiT_in(p->rchild);
}
void BiT_post_order(BiTNode *p){
if(p==NULL){
return ;
}
BiT_post_order(p->lchild);
BiT_post_order(p->rchild);
cout<<p->data<<" ";
}
int main(){
char a[17]={'A','B','D','#','#','E','#','H','#','#','C','F','#','#','G','#','#'};
int b=0;
int *pi=&b;
BiTree Brinary_tree=BiT_create(a,16,pi);
cout<<"先序遍历二叉树:"<<endl;
BiT_pre(Brinary_tree);
cout<<endl;
cout<<"中序遍历二叉树:"<<endl;
BiT_in(Brinary_tree);
cout<<endl;
cout<<"后续遍历二叉树:"<<endl;
BiT_post_order(Brinary_tree);
}