博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 前序中序求二叉树
阅读量:3674 次
发布时间:2019-05-21

本文共 1536 字,大约阅读时间需要 5 分钟。

#include 
#include
#include
#define OK 1#define ERROR 0#define OVERFLOW -2typedef char TElemType;typedef struct BiNode{ TElemType data; struct BiNode *lchild,*rchild;}BiNode, *BiTree;void PostOrderTraverse(const char *preStart, const char *preEnd, const char *inStart, const char *inEnd,BiTree &T){ char root = *preStart; int len = preEnd - preStart,i = 0; T = (BiTree)malloc(sizeof(BiNode)); T->data = root; for(;*(inStart+i) != root && i<=len; i++); //查找根结点在中序的位置 if (i != 0) {//如果不是第一个,说明其含有左子树 PostOrderTraverse(preStart+1, preStart+i, inStart, inStart+i-1,T->lchild); } else { T->lchild = NULL; } if (i != len) {//如果不是最后一个,说明其含有右子树 PostOrderTraverse(preStart+i+1, preEnd, inStart+i+1, inEnd,T->rchild); } else { T->rchild = NULL; }}void PreOrderTraverse(BiTree T){//先序遍历的递归调用 if (T == NULL) { return; } printf("%c",T->data);//访问根结点 PreOrderTraverse(T->lchild);//访问左子树 PreOrderTraverse(T->rchild);//访问右子树}void InOrderTraverse(BiTree T){ if (T == NULL) { return; } InOrderTraverse(T->lchild);//访问左子树 printf("%c",T->data);//访问根结点 InOrderTraverse(T->rchild);//访问右子树}void PostOrderTraverse(BiTree T){ if (T == NULL) { return; } PostOrderTraverse(T->lchild);//访问左子树 PostOrderTraverse(T->rchild);//访问右子树 printf("%c",T->data);//访问根结点}int main(){ char *s1 = "ABCDEFG"; char *s2 = "CBEDAFG"; BiTree T = NULL; PostOrderTraverse(s1,s1+strlen(s1)-1, s2,s2+strlen(s2)-1,T); PreOrderTraverse(T); printf("\n"); InOrderTraverse(T); printf("\n"); PostOrderTraverse(T); printf("\n"); return 0;}

转载地址:http://sqmbn.baihongyu.com/

你可能感兴趣的文章
设计模式实践与总结(持续更新中)
查看>>
TCP拆包、滑动窗口通俗理解
查看>>
JavaFX开发使用经验
查看>>
MongoDB批量存储数据
查看>>
解决Idea中spring-boot的mybatis逆向工程不成功的问题
查看>>
抢红包
查看>>
打印选课学生名单
查看>>
二分查找
查看>>
双端队列
查看>>
线性探测法的查找函数
查看>>
邻接表存储图的广度优先遍历
查看>>
Kylin Cube构建流程
查看>>
新增多个 Flume 实例后,Kafka 数据重复消费问题处理
查看>>
如何从HDFS导入数据到ClickHouse
查看>>
布隆过滤器原理
查看>>
linux查找指定目录下面多种后缀名的方法
查看>>
统计指定路径hive表存量
查看>>
2021年,12月28号开始面试,截止时间2月8号收到的offer情况
查看>>
ES_记一次分页查询(getHits().getTotalHits() 获取总条目)为0的问题
查看>>
elasticsearch---批量修改,批量更新某个字段
查看>>