树的构建及相关遍历

来源:互联网 发布:sql中绝对值函数 编辑:程序博客网 时间:2024/05/17 08:29

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

 

typedef struct node{
 char data;
 struct node *lchild,*rchild;
}tree_node,*treenode;

 

treenode creat_tree(void){    //构建树
 char ch;
 treenode root;
 scanf("%c",&ch);
 if(ch=='#'){
  return NULL;
 }
 else{
  root=(treenode)malloc(sizeof(tree_node));
  root->data=ch;
  root->lchild=creat_tree();
  root->rchild=creat_tree();
 }
 return root;
}

 

void preorder(treenode r){    //前序遍历
 if(r==NULL)return;
 printf("%c",r->data);
 preorder(r->lchild);
 preorder(r->rchild);
}

 

void inorder(treenode r){       //中序遍历
 if(r==NULL)return;
 inorder(r->lchild);
 printf("%c",r->data);
 inorder(r->rchild);
}

 

void taorder(treenode r){       //后序遍历
 if(r==NULL)return;
 taorder(r->lchild);
 taorder(r->rchild);
 printf("%c",r->data);
}

 

int main(void){      //主函数调用
 treenode t;
 printf("Input:/n");
 t=creat_tree();
 inorder(t);
 printf("/n");
 taorder(t);
 printf("/n");
 preorder(t);
 printf("/n");
 return 0;
}

 

******************************

测试数据:

AB#D##CE###

*******************************

 

原创粉丝点击