二叉树的创建与访问算法的设计(三种遍历方法)
2018-12-22 11:58
211 查看
二叉树的创建与访问算法的设计(三种遍历方法)
1、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的先序遍历算法。
2、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的中序遍历算法。
3、【问题描述】
从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。
【基本要求】
实现以下基本操作:
(1)从键盘输入二叉树的元素,建立二叉树。
(2)实现二叉树的后序遍历算法。
程序
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct tree{ char date; struct tree *lchild; struct tree *rcjild; }tree,*shu; shu xjl(){ char b; shu p; scanf("%c",&b); if(b=='$'){ p=NULL; } else{ p=(shu)malloc(sizeof(tree)); p->date=b; p->lchild=xjl(); p->rcjild=xjl(); } return p; } void xbl( shu p ){ if(p!=NULL){ printf("%c\n",p->date); xbl(p->lchild); xbl(p->rcjild); } } shu zjl(){ char b; shu t; scanf("%c",&b); if(b=='$'){ t=NULL; } else{ t=(shu)malloc(sizeof(tree)); t->lchild=zjl(); t->date=b; t->rcjild=zjl(); } return t; } void zbl( shu t ){ if(t!=NULL){ zbl(t->lchild); printf("%c\n",t->date); zbl(t->rcjild); } } shu hjl(){ char b; shu f; scanf("%c",&b); if(b=='$'){ f=NULL; } else{ f=(shu)malloc(sizeof(tree)); f->lchild=hjl(); f->date=b; f->rcjild=hjl(); } return f; } void hbl( shu f ){ if(f!=NULL){ hbl(f->lchild); hbl(f->rcjild); printf("%c\n",f->date); } } void cd(){ int n; shu f; shu t; shu p; printf("***************************\n"); printf(" 请选择你要执行的功能:\n\n" ); printf(" 1、先序遍历建立二叉树\n\n"); printf(" 2、中序遍历建立二叉树\n\n"); printf(" 3、后序遍历建立二叉树\n\n"); printf(" 4、退出\n\n"); printf(" 5、返回主菜单\n\n"); printf("***************************\n"); scanf("%d",&n); getchar(); switch(n){ case 1: printf("请输入建立先序遍历二叉树数据:\n"); printf("----------------------------\n"); p=xjl(); printf("----------------------------\n"); printf("输出的先序遍历为:\n"); printf("----------------------------\n"); xbl(p); printf("----------------------------\n"); break; case 2: printf("请输入建立中序遍历二叉树数据:\n"); printf("-----------------------------\n"); p=zjl(); printf("-----------------------------\n"); printf("输出的中序遍历为:\n"); printf("-----------------------------\n"); zbl(t); printf("-----------------------------\n"); break; case 3: printf("请输入建立中序遍历二叉树数据:"); printf("-----------------------------\n"); p=hjl(); printf("-----------------------------\n"); printf("输出的后序遍历为:\n"); printf("-----------------------------\n"); hbl(f); printf("-----------------------------\n"); break; case 4: break; case 5: cd(); break; } } int main(){ int n; shu p; shu t; shu f; cd(); return 0; }
相关文章推荐
- 【算法设计-二叉树遍历】二叉树的递归与非递归遍历方法
- 二叉树(一):二叉树的创建以及三种遍历方法的递归实现
- 创建二叉树的两种方法以及三种遍历方法
- 二叉树的创建和前中后三种遍历方法
- 二叉树创建及遍历算法(递归及非递归)(转)
- 二叉树操作之三种遍历方法
- 线程间操作无效: 从不是创建控件的线程访问它的三种方法
- 用非递归方式实现二叉树的前、中、后三种遍历方法
- 算法实验-二叉树的创建和前序-中序-后序-层次 遍历
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树创建及遍历算法(递归及非递归)
- C预言的二叉树的创建和三种遍历方式
- java实现二叉树的三种遍历算法(递归)
- 二叉树前序遍历的三种方法
- 二叉树的创建和遍历方法(下)
- 线程间操作无效:从不是创建控件的线程访问它的三种方法
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树采用二叉链表结构表示。设计并实现如下算法:后序递归建树,先序非递归遍历该树。
- 二叉树的三种遍历方法(递归和非递归)(转载)