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

数据结构课后习题标准答案第六章

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

if (p->Rtag==link) //右链域为指针,则转右于树,继续右于树前序遍历 p=p->rchild; } }

算法时间复杂度为O(n)。

7.以二叉链表为存储结构,写出交换各结点左右子树的算法。

【解答】要交换各结点的左右子树,最方便的办法是用后序遍历算法,每访问一个结点时把两棵子树的指针进行交换,最后一次访问是交换根结点的子树。算法如下:

typedef char DataType; //定义DaTaType类型 typedef struct node { DataType data;

struct node lchild,rchild; //左右孩子子树 } BinNode; //结点类型 typedef BinNode *BinTree; #include

void ChangeBinTee (BinTree *T) //交换子树

{ if(*T) //这里以指针为参数使交换在实参的结点上进行 {

BinTreetemp; //后序遍历 ChangeBinTree(&(*T) ->lchild); ChangeBinTree(&(*T) ->rchlld); temp= (*T) ->lchild;

(*T) ->lchild= (*T) ->rchild; (*T) ->rchild=temp; } }

void PrintNode (BinTree T) //以前序序列打印结点数据 { if (T) {

Printf(¨%C\ PrintNode (T->lchild); PrintNode( T->rchiid); }

16 / 17

}

void main() //测试程序 { BinTree root;

CreatBinTree( &root); //建立二叉链表 PrintNode (root); //输出原表 printf( \

ChangeBinTree( &root); //交换子树 PrintNode (root); //输出新表 printf(\\n\ }

17 / 17

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