6.46③ 编写复制一棵二叉树的非递归算法。.doc

6.46③ 编写复制一棵二叉树的非递归算法。.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.46③ 编写复制一棵二叉树的非递归算法。.doc

6.46③ 编写复制一棵二叉树的非递归算法。 要求实现下列函数: void CopyBiTree(BiTree T, BiTree TT); /* 基于层次遍历的非递归复制二叉链表 */ 二叉链表类型定义: typedef char TElemType; // 设二叉树的元素为char类型 typedef struct BiTNode { TElemType data; BiTNode *lchild, *rchild; } BiTNode, *BiTree; 可用队列类型Queue的相关定义: typedef BiTree QElemType; // 设队列元素为二叉树的指针类型 Status InitQueue(Queue Q); Status EnQueue(Queue Q, QElemType e); Status DeQueue(Queue Q, QElemType e); Status GetHead(Queue Q, QElemType e); Status QueueEmpty(Queue Q); void CopyBiTree(BiTree T, BiTree TT) /* 基于层次遍历的非递归复制二叉链表 */ { QElemType p;Queue t2,tt2; InitQueue(t2); InitQueue(tt2); if(!T)TT=NULL; else { EnQueue(t2,T); if(!(TT=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW); p=TT; p-data=T-data; p-lchild=p-rchild=NULL; EnQueue(tt2,p); while(!QueueEmpty(t2)) { DeQueue(t2,T); DeQueue(tt2,p); if(T-lchild) { EnQueue(t2,T-lchild); if(!(p-lchild=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW); p-lchild-data=T-lchild-data; p-lchild-lchild=p-lchild-rchild=NULL; EnQueue(tt2,p-lchild); } if(T-rchild) { EnQueue(t2,T-rchild); if(!(p-rchild=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW); p-rchild-data=T-rchild-data; p-rchild-lchild=p-rchild-rchild=NULL; EnQueue(tt2,p-rchild); } } } } 6.65④ 已知一棵二叉树的前序序列和中序序列分别 存于两个一维数组中,试编写算法建立该二叉树的二 叉链表。 要求实现以下函数: void BuildBiTree(BiTree bt, int ps, char *pre, int is, char *ino, int n); /* 当前要建立的子树bt的元素总数为n,*/ /* 元素在前序序列pre的起始位置为ps,*/ /* 元素在中序序列ino的起始位置为is */ 二叉链表类型定义: typedef char TElemType; typedef struct BiTNode { TElemType data; BiTNode *lchild, *rchild; } BiTNode, *BiTree; void BuildBiTree(BiTree bt, int ps, char *pre, int is, char *ino, int n) /* 当前要建立的子树bt的元素总数为n,*/ /* 元素在前序序列pre的起始位置为ps,*/ /* 元素在中序序列ino的起始位置为is */ { if(n==0)bt=NULL; e

文档评论(0)

wsh1288 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档