第11周项目1 验证算法(2)二叉树构造算法的验证

来源:互联网 发布:淘宝达人网站 编辑:程序博客网 时间:2024/05/19 09:04
问题及代码:
/*     *Copyright (c) 2016,烟台大学计算机与控制工程学院     *All rights reserved.     *文件名称:shenpengpeng.cpp     *作    者:申鹏鹏     *完成日期:2016年11月10日     *版 本 号:v1.0     *     *问题描述:实现二叉树的二叉树构造算法的验证,并测试数据。 */

注:头文件及源文件代码见第10周项目1 二叉树算法

main函数(两种方法):

(1)由先序序列和中序序列构造二叉树:

#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;  }
(2)由中序序列和后序序列构造二叉树:
#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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脚上的肉烂了怎么办 商铺门口有电杆怎么办 漏电保护器坏了怎么办 空开进线烧了怎么办 过压保护灯亮怎么办 美的热水器接地异常怎么办 欠压保护器坏了怎么办 三孔插座没地线怎么办 二胡琴筒裂缝宽怎么办 有了月亮从四星宠满级的怎么办 党委下属没有党支部了党委怎么办 发生日期大于制单日期怎么办 美的空调出现p0怎么办 薯片受潮不脆了怎么办 泡过的莲子煮不烂怎么办 绿豆有煮不熟的怎么办 吃了羊肉吃西瓜怎么办 吃了狗肉和绿豆怎么办 做的衣柜没有门怎么办 蒸馒头熟了会瘪怎么办 3dmax贴图太大了怎么办 嘴皮边缘颜色深怎么办 嘴巴周围肤色暗沉怎么办 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办 胶皮与海绵开了怎么办 安卓不支持flash了怎么办 看视频要加载flash怎么办 下水道管子铁皮破了怎么办 炸金花牌一样大怎么办 玩棋牌游戏输了怎么办