第一范文网 - 专业文章范例文档资料分享平台

2016最新广工anyview数据结构答案

来源:用户分享 时间:2025/8/24 23:41:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

if (p->rchild != NULL) {

p =p->rchild; //若有右子树,转到该子树,继续寻找最左下结点 } else {

pr = p; //否则返回其父亲 p = p->parent;

while (p != NULL && (p->lchild != pr || NULL == p->rchild)) { //若其不是从左子树回溯来的,或左结点的父亲并没有右孩子 if (p->lchild == pr) { //若最左结点的父亲并没有右孩子 visit(p->data); //直接访问父亲(不用转到右孩子) }

pr = p; //父亲已被访问,故返回上一级 p = p->parent; //该while

循环沿双亲链一直查找,若无右孩子则访问,直至找到第一个有右孩子的结点为止(但不访问该结点,留给下步if语句访问) }

if (NULL != p) { //访问父亲,并转到右孩子(经上步while处理,可以确定此时p有右孩子) visit(p->data); p = p->rchild; } } } } } /**********

【题目】假设在三叉链表的结点中增设一个标志域 (mark取值0,1或2)以区分在遍历过程中到达该结点 时应继续向左或向右或访问该结点。试以此存储结 构编写不用栈辅助的二叉树非递归后序遍历算法。 带标志域的三叉链表类型定义:

typedef struct TriTNode { TElemType data;

struct TriTNode *lchild, *rchild, *parent; int mark; // 标志域 } TriTNode, *TriTree; **********/

void PostOrder(TriTree T, void (*visit)(TElemType)) /* 不使用栈,非递归后序遍历二叉树T, */ /* 对每个结点的元素域data调用函数visit */ {

// 0向左,1自身,2向右 TriTree p= T, pr; while(true){

while(p!=NULL&&p->mark!=1){ if(p->rchild!=NULL) //若有右孩子

p->mark=2; else p->mark=1; pr=p; p=p->lchild; }

p=pr; pr=pr->parent; if(p->mark==2) {p->mark=1; p=p->rchild;} else{ visit(p->data); p->mark=1; }

if(p->data==T->data) break; }

搜索更多关于: 2016最新广工anyview数据结构答案 的文档
2016最新广工anyview数据结构答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1595r5gagb10e609m87w9sc9l3ppnv019zb_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top