第十周项目1(2)-由后序序列和中序序列构造二叉树
来源:互联网 发布:2016国产网络剧排行榜 编辑:程序博客网 时间:2024/06/05 09:14
- /*
- *Copyright(c)2017,烟台大学计算机学院
- *All right reserved.
- *文件名:sk.cpp btree.h btree.cpp
- *作者:盛凯
- *完成日期:2017年11月30日
- *版本号:v1.0
- *
- *问题描述:后序序列和中序序列构造二叉树
- *输入描述:无
- *程序输出:见运行结果
sk.cpp: - #include <stdio.h>
#include <malloc.h>
#include "btree.h"
BTNode *CreateBT2(char *post,char *in,int n)
/*post存放后序序列,in存放中序序列,n为二叉树结点个数,
本算法执行后返回构造的二叉链的根结点指针*/
{
BTNode *s;
char r,*p;
int k;
if (n<=0) return NULL;
r=*(post+n-1); //根结点值
s=(BTNode *)malloc(sizeof(BTNode)); //创建二叉树结点*s
s->data=r;
for (p=in; p<in+n; p++) //在in中查找根结点
if (*p==r)
break;
k=p-in; //k为根结点在in中的下标
s->lchild=CreateBT2(post,in,k); //递归构造左子树
s->rchild=CreateBT2(post+k,p+1,n-k-1); //递归构造右子树
return s;
}
int main()
{
ElemType in[]="DGBAECF",post[]="GDBEFCA";
BTNode *b2;
b2=CreateBT2(post,in,7);
printf("b2:");
DispBTNode(b2);
printf("\n");
return 0;
} - 程序运行结果如图所示:
- 反思总结:
- 先从后序中找出根节点,然后再运动递归思想,将每个元素找出。
阅读全文
0 0
- 第十周项目1(2)-由后序序列和中序序列构造二叉树
- 第十一周项目1(2)由后序序列和中序序列构造二叉树
- 第十一周【项目一-(2-2)由后序序列和中序序列构造二叉树】
- 第十一周项目1--(2)二叉树构造算法的验证--由后序序列和中序序列构造二叉树
- 第十周项目1(2)-由先序序列和中序序列构造二叉树
- 第11周—项目1(2).1由后序序列和中序序列构造二叉树
- 第11周项目1-(2)2.由后序序列和中序序列构造二叉树
- 第十一周项目1(2)由先序序列和中序序列构造二叉树
- 第十一周【项目一-(2-1)由先序序列和中序序列构造二叉树】
- 第十一周项目1--(2)二叉树构造算法的验证--由先序序列和中序序列构造二叉树
- 第十一周项目2 二叉树构造算法--中序序列和后序序列构造二叉树
- 第11周项目1-(2)二叉树构造算法的验证、由后序序列和中序序列构造二叉树
- 第11周—项目1(2).1由先序序列和中序序列构造二叉树
- 第11周项目1-(2)。1由先序序列和中序列构造二叉树
- 由中序遍历序列和后序遍历序列构造二叉树(递归实现)
- 由先序序列/后序序列和中序序列构造二叉树
- 第11周项目1-(2)二叉树构造算法的验证、由先序序列和中序序列构造二叉树
- 第十周项目一 二叉树构造算法的验证---中序和后序序列构造二叉树(3)
- Java运算符
- java中的==和equals()
- 第十二周-项目二-最小生成树的克鲁斯卡尔算法
- 牛客 寻找Coder
- 数据结构上机实践第14周项目1(4)
- 第十周项目1(2)-由后序序列和中序序列构造二叉树
- 376. Wiggle Subsequence
- 第十三周项目一(2)——验证分块查找算法
- vue build前图片样式注意事项
- leetcode-Sum Root to Leaf Numbers
- Java操作MongoDB采用MongoRepository仓库进行条件查询
- 第十四周 项目1-验证算法(2)
- iOS开发中的一些常用小技巧
- 查找