(1)仿照中序线家二叉树,定义前序线索二叉树的类结构;
(2)编写算法,实现二叉树到前序线索二叉树的转换;
(3)编写算法,在以1为根的子树中求指定结点p的父结点;
(4)编写算法,求以t为根的子树的前序下的第一个结点
(5)编写算法,求以t为根的子树的前序下的最后一个结点;
(6)编写算法,求结点t的前序下的后继结点:
(7)编写算法,求结点t的前序下的前驱结点;
(8)编写算法,实现前序线索二叉树的前序遍历.
(1)编写算法,实现二叉树到后序线索二叉树的转换;
(2)编写算法,求以t为根的子树的后序下的第一个结点;
(3)编写算法,求以t为根的子树的后序下的最后一个结点;
(4)编写算法,求结点t的后序下的后继结点;
(5)编写算法,求结点t的后序下的前驱结点;
(6)编写算法,实现后序线索二叉树的后序遍历
StatusPostOrderThreading(BiThrTree&T,BiThrTree&pre);//首先建立后序线索树
StatusFindNextInBiThrTree(BiThrTree&q,TElemType*p);//再进行查找
//后序线索二叉树的算法
StatusPostOrderThreading(BiThrTree&Thrt,BiThrTree&T)
{BiThrTreepre;Thrt=newBiThrNode;//为线索二叉树建立头结点if(!Thrt)exit(OVERFLOW);Thrt-
>LTag=Link;Thrt->RTag=Thread;Thrt->rchild=Thrt;//右子树回指if(!T)Thrt->lchild=Thrt;//若二叉树空,左子
树回指else{Thrt->lchild=T;pre=Thrt;
PostThreading(T,pre);//后序遍历进行后序线索化
pre->rchild=Thrt;//最后一个结点线索化
pre->RTag=Thread;Thrt->rchild=pre;}returnOK;}
StatusPostThreading(BiThrTree&T,BiThrTree&pre)
{if(T){
if(T->LTag==Link)PostThreading(T->lchild,pre);
if(T->RTag==Link)PostThreading(T->rchild,pre);
if(!T->lchild){T->LTag=Thread;___________}
if(pre&&!pre->rchild){
pre->RTag=Thread;pre->rchild=T;}pre=T;}returnOK;}
A.T->lchild=pre;
B.pre->lchild=T
C.T->rchild=pre
D.pre->rchild=T
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!