二叉树的建立,以及递归前中后序遍历二叉树
2017-12-13 19:37
246 查看
测试用例如图:
#include <stdio.h> #include <stdlib.h> #define TREE "+*E*D/CAB" typedef int dt; typedef struct NODE { dt data; struct NODE *lp; struct NODE *rp; } Node, *Nodep; void first(Nodep ptr) { if (ptr) { printf("%c", ptr->data); first(ptr->lp); first(ptr->rp); } } void mid(Nodep ptr) { if (ptr) { mid(ptr->lp); printf("%c",ptr->data); mid(ptr->rp); } } void last(Nodep ptr) { if (ptr) { last(ptr->lp); last(ptr->rp); printf("%c", ptr->data); } } int main() { Nodep root = NULL; Nodep tnode = (Nodep)malloc(sizeof(Node)); Nodep pl = NULL; Nodep pr = NULL; char s[] = TREE; //建立二叉树 root = tnode; tnode->data = s[0]; tnode->lp = NULL; tnode->rp = NULL; char *p = s + 1; while(*p) { //printf("%c", *p++); pl = (Nodep)malloc(sizeof(Node)); pl->data = *p++; pl->lp = NULL; pl->rp = NULL; pr = (Nodep)malloc(sizeof(Node)); pr->data = *p++; pr->lp = NULL; pr->rp = NULL; tnode->lp = pl; tnode->rp = pr; tnode = tnode->lp; } //test puts("Middle:"); mid(root); puts(""); puts("First:"); first(root); puts(""); puts("Last:"); last(root); puts(""); puts(""); return 0; }
相关文章推荐
- 二叉树的建树,按层遍历,结点总数,页结点,深度以及三序非递归遍历二叉树,建立中序线索二叉树
- 二叉树的建立&&前中后遍历(递归实现)&&层次遍历
- 二叉树的建立以及六种递归非递归遍历
- 二叉树的建立以及先序中序后序递归遍历
- 二叉树先序后序递归建立,前中后序层次非递归遍历,以及统计叶子结点个数以及树的深度
- python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)
- 二叉树的建立,前中后序遍历的递归版本和非递归版本,层序遍历
- 二叉树的建立以及三种遍历方式的递归、非递归的实现
- 二叉树的递归创建,以及二叉查找树查找的建立 和遍历查找的比较
- 二叉树的先序以及后序递归建立,先中后序递归遍历。
- 二叉树的建立以及前序、中序、后序遍历的递归和非递归实现
- 二叉树建立以及递归、非递归遍历
- 二叉树各种遍历算法(递归以及非递归)6
- 二叉树建立、递归、非递归遍历
- 【数据结构】二叉树前中后序遍历、层序遍历(递归实现)
- 【二叉树5】前中后遍历二叉树的递归和非递归方法
- 递归建立普通二叉树两种方式遍历
- 二叉树的建立及递归遍历
- 顺序二叉树的建立、前中后序遍历。
- 二叉树的建立,以及非递归遍历