二叉树(先序创建,递归先序,中序,后序遍历)-----1
2012-10-22 20:26
316 查看
/* 递归前序建立二叉树 */
#include <stdlib.h>/* 定义二叉树节点类型 */typedef struct node {char data;struct node *lchild;struct node *rchild;}BiTNode, *BiTree;/*先序创建*/BiTree CreatBitTree() {char ch;BiTree b;/*此时输入的值有两种情况:一是输入#,二为要申请节点的存储值*/scanf("%c", &ch);/* 遇到空节点停止递归 ,这样某一节点的某一个孩子指向空*/if (ch == '#') {b = NULL;}/*不为空的话,那么这个孩子指向一个新的节点*/else {b = (BiTree) malloc(sizeof(BiTNode));/* 建立根节点 *//*前面的输入即为初始化*/b->data = ch;/* 递归先序建立左子树 */b->lchild = CreatBitTree();/* 递归先序建立右子树 */b->rchild = CreatBitTree();}return b;}void PreOrder(BiTree t) { /* 二叉树的先序遍历算法 */if(t!=NULL) {putchar (t->data);PreOrder(t->lchild);PreOrder(t->rchild);}}void InOrder(BiTree t) { /* 二叉树的先中序遍历算法 */if(t != NULL) {InOrder(t->lchild);putchar(t->data);InOrder(t->rchild);}}void PostOrder(BiTree t) { /* 二叉树的后序遍历算法 */if(t != NULL) {PostOrder(t->lchild);PostOrder(t->rchild);putchar(t->data);}}main() {BiTree T;T = CreatBitTree();PreOrder(T);printf("\n");InOrder(T);printf("\n");PostOrder(T);}
相关文章推荐
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- 非递归创建二叉树 先序 中序 后序遍历
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- 采用二叉链表结构实现二叉树,并以递归遍历思想实现二叉树的创建、二叉树的遍历(先序、中序、后序和层次遍历)
- 递归创建二叉树,前序,中序,后序遍历二叉树,广义表创建二叉树,非递归前序,中序,后序遍历二叉树
- 二叉树的递归创建以及前序,中序,后序遍历
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树 —— 创建 + 先序、中序、后序遍历(递归+非递归)
- 二叉树的前中后层次遍历(递归+非递归)、创建树(数组、前序+中序、中序加后序)
- c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历
- 第6章 树和二叉树——递归方法先序、中序、后序遍历二叉链表表示的二叉树
- 数据结构(一)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树前序、中序、后序遍历非递归写法的透彻解析
- 二叉树的先序、中序、后序非递归遍历的实现
- [leet code ] 二叉树非递归前序 中序,后序遍历
- 数据结构---二叉树的前序、中序、后序遍历的递归和非递归 实现(C++)
- 二叉树的前序,中序,后序遍历。用递归和非递归实现
- (编程训练)再回首,数据结构——二叉树的前序、中序、后序遍历(递归)
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度