- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求二叉树根到给定节点的路径设计报告
题目:
求二叉树根到给定节点的路径
摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的节点,利用双亲指针找出该节点所有祖先并入栈,直至根节点,然后再让栈中元素依次出栈,得到二叉树到该节点的路径,使程序得以实现。
关键字:二叉树 双亲指针 栈 路径
目 录
1、题目要求------------------------------------------------------------------4
2、设计思想------------------------------------------------------------------4
3、系统完成功能及框图---------------------------------------------------4
4、界面设计------------------------------------------------------------------6
5、核心算法及说明---------------------------------------------------------8
6、结论------------------------------------------------------------------------10
7、后记------------------------------------------------------------------------11
8、附录------------------------------------------------------------------------11
题目要求:
在采用顺序表存储结构存储的二叉树上,以bt指向根接点,p指向任一给定的接点,编程实现求出从根接点到给定接点之间的路径。
第二章 设计思想:
首先输入要查找的二叉树的各个节点和双亲指针,采用双亲表示法存储结构创建一棵二叉树,然后通过path()函数在树中找到要查找的节点,再利用树的双亲指针逐层向上找到该节点的所有祖先,让其进栈,最后依次输出栈中的节点数据即为二叉树根到给定节点的路径。
第三章 系统完成功能及框图:
3.1系统完成功能:
系统功能包括创建二叉树和求二叉树根结点到给定结点的路径两部分。
3.2功能框图:
3.2.1整体框图:
3.2.2求路径算法的流程图:
第四章 界面设计:
图1 程序运行开始界面
图2 创建二叉树的界面
图3 输出顺序存储的二叉树的界面
图4 求到给定节点路径的界面
第五章 核心算法及说明:
我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的节点,利用双亲指针找出该节点所有祖先并入栈,直至根节点,然后再让栈中元素依次出栈,得到二叉树到该节点的路径
5.1 定义数据类型
struct PTNode //定义树的节点类型
{
char data; //节点数据
int parent; //双亲指针
};
typedef struct{ //定义树结构
struct PTNode nodes[100]; //定义存放节点的数组
int r,n; //根的位置与节点数
}PTree;
5.2 创建二叉树
void CreatPTree(PTree *PT) //采用双亲表存储构建树
{
cout 请输入二叉树根节点的位置r和节点数n:\n ;
cout 根节点的位置r=;
cinPT-r;
cout 二叉树的节点数n=;
cinPT-n;
char d;
int p;
cout //***请输入节点和双亲指针\n;
for(int i=0;iPT-n;i++)
{
cindp;
PT-nodes[i].data=d;
PT-nodes[i].parent=p;
}
cout 以下就是节点数是PT-n的二叉树endl;
for(i=0;iPT-n;i++) //输出顺序存储的二叉树
{
couti PT-nodes[i].data PT-nodes[i].parentendl;
}
}
5.3 求根节点到给定节点的路径
void path(PTree *PT , char e) //求根节点到给定节点的路径
{
int s[100],top=-1;
文档评论(0)