第十一周-二叉树的构造
2015-11-23 16:23
281 查看
#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; }
运行结果:
相关文章推荐
- 为什么寄存器比内存快?
- uva 725
- 关于sip应用于公网上的一些尴尬
- IOS上 关于状态栏的相关设置(UIStatusBar)(转载自shede333博客)
- Oracle数据库中的两种日期类型:date和timestamp
- JS中自定义List
- Solr
- 图遍历算法实现
- map遍历
- 第八周项目4
- 第十二周 项目4-利用遍历思想求解图问题(2)
- 如何判断当前主机是物理机还是虚拟机?
- Android_loading动画2
- UITextFieldDelegate和tap事件
- vs CLR20r3错误
- UIToolBar
- 在C++中子类继承和调用父类的构造函数方法
- Javascript中this关键字详解
- 第十二周 项目四(4) 利用遍历思想求解图问题
- 第十二周--项目4应用图的深度优先遍历思路求解问题 (6)(7)