数据结构与算法系列-树-二叉树的遍历(先序、中序、后序)
2013-11-12 20:35
323 查看
DLR:先序遍历(Perorder Traverse,也叫做前序遍历)
访问根节点的操作发生在遍历其左右子树之前。 顺序为 根-左-右
LDR 中序遍历 (Inorder Traverse)
访问根节点的操作发生在遍历其左右子树之中 。 顺序为 左-根-右
LRD 后序遍历(Postorder Traverse)
访问根节点操作发生在遍历其左右子树之后 。 顺序为 左-右-根
访问根节点的操作发生在遍历其左右子树之前。 顺序为 根-左-右
LDR 中序遍历 (Inorder Traverse)
访问根节点的操作发生在遍历其左右子树之中 。 顺序为 左-根-右
LRD 后序遍历(Postorder Traverse)
访问根节点操作发生在遍历其左右子树之后 。 顺序为 左-右-根
#include<malloc.h> #include<stdio.h> typedef struct btnode{ int data; struct btnode *lchild; struct btnode *rchild; }BTNODE,*BINTREE; void createbintree(BINTREE *t){/*输入二叉树的先嘘遍历序列,创建二叉链表*/ int a; scanf("%d",&a); if(a==0) *t=NULL; else{ *t = (BTNODE *)malloc(sizeof(BTNODE));/*申请结点*t的结点空间*/ (*t)->data = a;/*将结点数据a放入根结点的数据域*/ createbintree(&(*t)->lchild);/*建立左子树*/ createbintree(&(*t)->rchild);/*建立左子树*/ } } void preorder(BINTREE T){/*先序遍历*/ if(T){ printf("%d ",T->data); preorder(T->lchild); preorder(T->rchild); } } void inorder(BINTREE T){ if(T){ inorder(T->lchild); printf("%d",T->data); /*访问跟结点*/ inorder(T->rchild); } } void postorder(BINTREE T){ if(T){ postorder(T->lchild); postorder(T->rchild); printf("%d",T->data);/*访问根节点*/ } } main(){ BINTREE t= NULL; printf("\n please input nodes of BINTREE:"); createbintree(&t); printf("\n please preorder is :"); // preorder(t); //inorder(t); postorder(t); }
相关文章推荐
- 【面试算法系列】已知二叉树的前序和中序遍历重建二叉树 - C语言实现
- 数据结构与算法(二):二叉树前序,中序,后序遍历详解
- 数据结构与算法系列-树-二叉树的遍历(按层次遍历)
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 遍历二叉树(前序、中序、后序、层序)
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树前序、中序、后序遍历非递归写法的透彻解析
- 二叉树的中序,前序,后序非递归遍历
- 先序递归构造二叉树 中序递归遍历二叉树
- 已知二叉树的先序遍历和中序遍历序列,输出后序遍历序列
- 由前序遍历和中序遍历重建二叉树,再实现后续遍历
- 二叉树的前序,中序,后序遍历
- 先序扩展序列建立二叉树;先序、中序、后序遍历的递归算法(树)
- 二叉树的创建和前序,中序,后序遍历
- 根据前序遍历序列和中序遍历序列构造二叉树
- 根据二叉树的先序遍历和中序遍历重构二叉树
- 二叉树的遍历:前序、中序、后序、层序的非递归实现