二叉树的基本操作(非递归)(修改)
来源:互联网 发布:猎头 候选人推荐算法 编辑:程序博客网 时间:2024/06/05 23:41
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20typedef struct node{ char data; node * lchild; node * rchild;}BTree;typedef struct{ BTree * data[MAXSIZE]; int top;}SeqStack;BTree * create(BTree * p){ char ch; scanf("%c",&ch); if(ch != '#'){ p = (BTree *)malloc(sizeof(BTree)); p->data = ch; p->lchild = create(p->lchild); p->rchild = create(p->rchild); return p; }else{ return NULL; }}void preorder(BTree * p,SeqStack * s){ while(p != NULL || s->top != -1){ if(p!=NULL){ s->top++; printf("%4c",p->data); s->data[s->top] = p; p = p->lchild; }else{ p = s->data[s->top]; s->top--; p = p->rchild; } }}void inorder(BTree * p,SeqStack * s){ while(p != NULL || s->top != -1){ if(p!=NULL){ s->top++; s->data[s->top] = p; p = p->lchild; }else{ p = s->data[s->top]; printf("%4c",p->data); s->top--; p = p->rchild; } } }void postorder(BTree * p,SeqStack * s){ BTree * visited = NULL; while(p != NULL || s->top != -1){ while(p != NULL){ s->top++; s->data[s->top] = p; p = p->lchild; } p = s->data[s->top]; if(p->rchild == NULL || p->rchild == visited){ printf("%4c",p->data); visited = p; s->top--; p = NULL; }else{ p = p->rchild; } }}int main(){ SeqStack * s = (SeqStack *)malloc(sizeof(SeqStack)); s->top = -1; BTree * p; p = create(p); printf("preorder:\n"); preorder(p,s); printf("\n"); printf("inorder:\n"); inorder(p,s); printf("\n"); printf("postorder:\n"); postorder(p,s); printf("\n"); return 0;}
结果:
0 0
- 二叉树的基本操作(非递归)(修改)
- 二叉树的基本操作(非递归)
- C++实现二叉树的基本操作(递归+非递归)
- 二叉树的创建和基本操作(递归和非递归)
- 二叉树的基本操作实现(递归和非递归)
- 二叉树的基本操作(递归)
- 数据结构——排序/搜索二叉树(非递归)的基本操作实现
- 二叉树的基本操作(创建、递归和非递归遍历、求深度、求叶子数)
- C++实现二叉搜索树基本操作(递归+非递归+应用)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- boslicense 绕开bos的license检查
- 使用Sublime Text搭建python调试环境
- iOS Block循环引用检测
- 【Linux开发】内核模块简介
- JavaScript 开发工具webstrom使用指南
- 二叉树的基本操作(非递归)(修改)
- 自建CDN研发团队架构
- 推荐Huploadify实现上传图片或文件
- linux检测文件夹是否存在
- 心灵鸡汤之20160516带残缺的美更珍贵
- Activity的启动方式和flag详解
- 移动应用之手机验证码(推荐接口_完全免费)
- -webkit-tap-highlight-color
- iOS9 NetworkExtension使用