求二叉树根到给定节点的路径设计报告
题目:
求二叉树根到给定节点的路径
摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的节点,利用双亲指针找出该节点所有祖先并入栈,直至根节点,然后再让栈中元素依次出栈,得到二叉树到该节点的路径,使程序得以实现。
关键字:二叉树 双亲指针 栈 路径
目 录
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<
cout<
cin>>PT->r;
cout<
cin>>PT->n;
char d;
int p;
cout<
for(int i=0;in;i++)
{
cin>>d>>p;
PT->nodes[i].data=d;
PT->nodes[i].parent=p;
}
cout<n<
for(i=0;in;i++) //输出顺序存储的二叉树
{
cout<nodes[i].data<nodes[i].parent<
}
}
5.3 求根节点到给定节点的路径
void path(PTree *PT ,