第十一周 项目一-验证算法(2)
来源:互联网 发布:白鲨外设淘宝店好 编辑:程序博客网 时间:2024/06/05 11:26
#include <stdio.h> #include <malloc.h> #include "btree.h" BTNode *CreateBT1(char *pre,char *in,int n) /*pre存放先序序列,in存放中序序列,n为二叉树结点个数, 本算法执行后返回构造的二叉链的根结点指针*/ { BTNode *s; char *p; int k; if (n<=0) return NULL; s=(BTNode *)malloc(sizeof(BTNode)); //创建二叉树结点*s s->data=*pre; for (p=in; p<in+n; p++) //在中序序列中找等于*ppos的位置k if (*p==*pre) //pre指向根结点 break; //在in中找到后退出循环 k=p-in; //确定根结点在in中的位置 s->lchild=CreateBT1(pre+1,in,k); //递归构造左子树 s->rchild=CreateBT1(pre+k+1,p+1,n-k-1); //递归构造右子树 return s; } int main() { ElemType pre[]="ABDGCEF",in[]="DGBAECF"; BTNode *b1; b1=CreateBT1(pre,in,7); printf("b1:"); DispBTNode(b1); printf("\n"); return 0; }
由先序序列和中序序列构造二叉树:
#include <stdio.h> #include <malloc.h> #include "btree.h" BTNode *CreateBT1(char *pre,char *in,int n) /*pre存放先序序列,in存放中序序列,n为二叉树结点个数, 本算法执行后返回构造的二叉链的根结点指针*/ { BTNode *s; char *p; int k; if (n<=0) return NULL; s=(BTNode *)malloc(sizeof(BTNode)); //创建二叉树结点*s s->data=*pre; for (p=in; p<in+n; p++) //在中序序列中找等于*ppos的位置k if (*p==*pre) //pre指向根结点 break; //在in中找到后退出循环 k=p-in; //确定根结点在in中的位置 s->lchild=CreateBT1(pre+1,in,k); //递归构造左子树 s->rchild=CreateBT1(pre+k+1,p+1,n-k-1); //递归构造右子树 return s; } int main() { ElemType pre[]="ABDGCEF",in[]="DGBAECF"; BTNode *b1; b1=CreateBT1(pre,in,7); printf("b1:"); DispBTNode(b1); printf("\n"); return 0; }
运行结果:
由后序序列和中序序列构造二叉树:
#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; }
#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
- 第十一周 项目一(2) 验证算法
- 第十一周--项目一--验证算法(2)
- 第十一周项目一——验证算法(2)
- 第十一周 项目一-验证算法(2)
- 第十一周--项目一二叉树算法验证(一)
- 第十一周 项目一-验证算法
- 第十一周 项目一 验证算法
- 第十一周 【项目一 验证算法 3 】
- 第十一周项目一-二叉树算法验证(2)二叉树构造算法的验证
- 第十一周项目一:验证算法(2)二叉树构造算法的验证
- 第十一周 项目一 -二叉树算法验证(2)二叉树构造算法的验证
- 第十一周-项目一 验证算法(2)二叉树构造算法的验证
- 第十一周项目一 -验证算法(2)二叉树构造算法的验证
- 第十一周--项目一--验证算法(1)
- 第十一周--项目一二叉树算法验证(二)
- 第十一周--项目一--验证算法(3)
- 第十一周--项目一二叉树算法验证(三)
- 第十一周--项目一二叉树算法验证(四)
- 【AI每日播报】意念控制特斯拉 AI看漫画
- 了解HHOOK之路( 二 )
- [webAPP项目]基于MUI框架开发APP功能点开发详解大纲
- Linux中的update和upgrade的作用
- bootstrap Table's Parameter
- 第十一周 项目一-验证算法(2)
- 启程
- centos6.5设定IP
- 第十一周项目1验证算法—(4)哈夫曼编码的算法验证
- java算法3~翻转字符串
- 1034. Head of a Gang (30) (并查集 & map)
- ADS1.2裸板调试mini2440串口 (含源码)
- 在查询分析器中执行update更新一个字段查询一直执行但不会成功
- Linux环境下Tomcat相关命令