简单的二叉树创建、遍历(V1.0)
来源:互联网 发布:国家数据标准规范 编辑:程序博客网 时间:2024/05/17 04:06
二叉树如图
输入:AB#D##CE###
前序遍历结果:ABDCE
中序遍历结果:BDAEC
后序遍历结果:DBECA
下面根据,创建函数的不同,分为三种类型
#include <stdio.h>#include <stdlib.h>/********************创建方法1:main中创建树指针,create_tree传入指针***************************/#if 0 typedef struct bitnode{int data;struct bitnode *lchild;struct bitnode *rchild;}BITNODE, *BITREE;BITREE create_tree(BITREE t){char ch;scanf("%c", &ch);if(ch == '#')t = NULL;else{if(!(t=(BITREE)malloc(sizeof(BITNODE))))printf("error\r");t->data = ch;t->lchild = create_tree(t->lchild);t->rchild = create_tree(t->rchild);}return t;}//前序遍历void pre_order_traverse(BITREE t){if(t){printf("%c ", t->data);pre_order_traverse(t->lchild);pre_order_traverse(t->rchild);}}//中序遍历void in_order_traverse(BITREE t){if(t){in_order_traverse(t->lchild);printf("%c ", t->data);in_order_traverse(t->rchild);}}//后序遍历void post_order_traverse(BITREE t){if(t){post_order_traverse(t->lchild);post_order_traverse(t->rchild);printf("%c ", t->data);}}int main(){BITREE t;t = create_tree(t);printf("\n前序遍历为\n");pre_order_traverse(t);printf("\n中序遍历为\n");in_order_traverse(t);printf("\n后序遍历为\n");post_order_traverse(t);printf("\n");}#endif/********************创建方法2:main中创建树指针,create_tree传入指针的地址***************************/#if 0 typedef struct bitnode{int data;struct bitnode *lchild;struct bitnode *rchild;}BITNODE, *BITREE;void create_tree(BITREE *t){char ch;scanf("%c", &ch);if(ch == '#')return ;else{if(!(*t=(BITREE)malloc(sizeof(BITNODE))))printf("error\r");(*t)->data = ch;create_tree(&((*t)->lchild));create_tree(&((*t)->rchild));}return ;}//前序遍历void pre_order_traverse(BITREE t){if(t){printf("%c ", t->data);pre_order_traverse(t->lchild);pre_order_traverse(t->rchild);}}//中序遍历void in_order_traverse(BITREE t){if(t){in_order_traverse(t->lchild);printf("%c ", t->data);in_order_traverse(t->rchild);}}//后序遍历void post_order_traverse(BITREE t){if(t){post_order_traverse(t->lchild);post_order_traverse(t->rchild);printf("%c ", t->data);}}int main(){BITREE t;create_tree(&t);printf("\n前序遍历为\n");pre_order_traverse(t);printf("\n中序遍历为\n");in_order_traverse(t);printf("\n后序遍历为\n");post_order_traverse(t);printf("\n");}#endif/********************创建方法3:main中创建树指针,create_tree不传参***************************/typedef struct bitnode{int data;struct bitnode *lchild;struct bitnode *rchild;}BITNODE, *BITREE;BITREE create_tree(){char ch;BITREE t;scanf("%c", &ch);if(ch == '#')return NULL;else{if(!(t=(BITREE)malloc(sizeof(BITNODE))))printf("error\r");t->data = ch;t->lchild = create_tree();t->rchild = create_tree();}return t;}//前序遍历void pre_order_traverse(BITREE t){if(t){printf("%c ", t->data);pre_order_traverse(t->lchild);pre_order_traverse(t->rchild);}}//中序遍历void in_order_traverse(BITREE t){if(t){in_order_traverse(t->lchild);printf("%c ", t->data);in_order_traverse(t->rchild);}}//后序遍历void post_order_traverse(BITREE t){if(t){post_order_traverse(t->lchild);post_order_traverse(t->rchild);printf("%c ", t->data);}}int main(){BITREE t;t = create_tree();printf("\n前序遍历为\n");pre_order_traverse(t);printf("\n中序遍历为\n");in_order_traverse(t);printf("\n后序遍历为\n");post_order_traverse(t);printf("\n");}
0 0
- 简单的二叉树创建、遍历(V1.0)
- 简单的二叉树创建和遍历
- 二叉树的简单创建与三中遍历
- 二叉查找树的简单创建和3种遍历
- 二叉树简单实现(创建、遍历、叶子数等)
- 二叉树简单实现(创建、遍历、叶子数等)
- 二叉树的创建、遍历
- 二叉树的创建,遍历
- 二叉树的创建、遍历
- 二叉树的简单递归实现(创建,遍历,高度,大小)
- 线索化二叉树(二叉树的简单遍历)
- 二叉树的遍历,二叉树的创建、前序遍历、中序遍历、后序遍历 (转)
- 二叉树的创建以及四种遍历,叶子结点的数量,二叉树深度(简单二叉树)
- 二叉树的创建、遍历、排序二叉树、多叉树创建
- 二叉树 创建 遍历!!!
- 数据结构(十二) 二叉树的基本操作 --- 创建一个二叉树 前中后序遍历二叉树
- 二叉树的创建与遍历(递归创建与遍历)
- 二叉树的创建与遍历(递归版本)
- Database LeetCode Second Highest Salary
- 日本猥琐雨伞设计:裙底伞
- ML学习分享系列(2)_计算广告小窥[中]
- android:自定义HorizontalScrollView实现qq侧滑菜单 标签: HorizontalScrollView自定义viewqq侧滑菜单 2016
- 无聊时总结总结算法之07堆排序
- 简单的二叉树创建、遍历(V1.0)
- 在应用层通过spring特性解决数据库读写分离
- 线程
- tkinter示例:随意测试
- POJ1094 Sorting It All Out(拓扑排序)
- 设置listview的数据为空时的提示
- Java的的三元运算符
- 关于float和double类型数据的输入输出
- android persistent属性研究