第十一周项目一 验证算法(2)二叉树构造算法的验证(后序和中序)
2016-11-10 11:02
253 查看
问题及代码:
1、btree.h的代码(见二叉树算法库)
2、btree.cpp的代码(见二叉树算法库)
3、main.cpp的代码
运行结果:
总结:
任何n(n>0)个不同节点的二叉树,都可由它的中序序列和后序序列唯一地确定。
/* *烟台大学计算机与控制工程学院 *作 者:孙丽玮 *完成日期:2016年11月10日 *问题描述:任何n(n>0)个不同节点的二叉树,都可由它的中序序列和后序序列唯一地确定。 */
1、btree.h的代码(见二叉树算法库)
2、btree.cpp的代码(见二叉树算法库)
3、main.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 post[]="DKIFBHJEGCA",in[]="DBKFIAHEJCG"; BTNode *b2; b2=CreateBT2(post,in,11); printf("b2:"); DispBTNode(b2); printf("\n"); return 0; }
运行结果:
总结:
任何n(n>0)个不同节点的二叉树,都可由它的中序序列和后序序列唯一地确定。
相关文章推荐
- 第十一周项目一 验证算法(2)二叉树构造算法的验证(先序和中序)
- 第十一周项目1——二叉树算法验证(3) 中序线索化二叉树的算法验证
- 第十一周项目一:验证算法(2)二叉树构造算法的验证
- 第十一周实践项目~验证算法(2)二叉树构造算法的验证
- 第十一周项目1-中序线索化二叉树的算法验证
- 第十一周 项目1-3 中序线索化二叉树的算法验证
- 第十一周项目一:验证算法(3)中序线索化二叉树二叉树的算法验证
- 第十一周 项目一 -二叉树算法验证(3)中序线索化二叉树的算法验证
- 第十一周项目(3):验证算法——中序线索化二叉树的算法检验
- 第十一周项目(2):验证算法——二叉树构造算法的验证
- 第十一周 项目一(3) 中序线索化二叉树的算法验证
- 第十一周 项目一(3)-中序线索化二叉树的算法验证
- 第十一周项目1--(3)中序线索化二叉树的算法验证
- 第十一周项目1-验证算法(3)中序线索化二叉树的算法验证
- 第十一周项目1—验证算法(3)中序线索化二叉树的算法验证
- 第十一周实践项目1—验证算法(3)中序线索化二叉树的算法验证
- 第十一周项目1-验证算法(3)中序线索化二叉树的算法验证
- 第十一周--项目1 - 二叉树算法验证(3)中序线索化二叉树的算法验证
- 第十一周项目3中序线索化二叉树的算法验证
- 第十一周项目1 算法验证3中序线索化二叉树的算法验证