中序线索二叉树的图怎么画?

zyj687 2010-11-19 05:46:51
已知二叉树为下图所示,请画出其中序线索二叉树


最好能告诉我具体的步骤,谢谢各位高手哈
或者给我发邮件也可以哈。谢谢各位了。。。
Email:zyj687@gmail.com
...全文
7808 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
djh512 2010-11-22
  • 打赏
  • 举报
回复
线索二叉树 就是对一个结点来说 若是它的左子树或右子树为空
则左子树指向它的前驱 右子树指向它的后继
若左右不为空 则指向它的子树
djh512 2010-11-22
  • 打赏
  • 举报
回复

//------------------------------------------------------------------
//------------------------------------------------------------------
// 中序线索二叉树


//中序遍历线索二叉树,递归中序线索化
void InThreading( BiThrNode * p,BiThrNode * & pre )
{
if(p)
{
InThreading( p->lchild,pre );

if( !p->lchild )
{
p->LTag = Thread;
p->lchild = pre;
}

if( !pre->rchild )
{
pre->RTag = Thread;
pre->rchild = p;
}

pre = p;

InThreading( p->rchild,pre );
}
}

//中序遍历线索二叉树,并中序线索化,带头结点Thrt
void InOrderThreading( BiThrNode * & Thrt, BiThrNode * root )
{
Thrt = new BiThrNode;
Thrt->LTag = Link;
Thrt->RTag = Thread;
Thrt->rchild = Thrt;

BiThrNode * pre;

if( !root )
Thrt->lchild = Thrt;
else
{
Thrt->lchild = root;
pre = Thrt;
InThreading( root,pre );
pre->rchild = Thrt;
pre->RTag = Thread;
Thrt->rchild = pre;
}
}

//中序遍历线索二叉树的非递归算法
void InOrderTraverse_Thr( BiThrNode * Thrt )
{
BiThrNode * p = Thrt->lchild;

while( p != Thrt )
{
while( p->LTag == Link )
p = p->lchild; //找到最左边的子节点
cout<<p->data<<" ";
while( p->RTag == Thread && p->rchild != Thrt )
{
//访问后继结点
p = p->rchild;
cout<<p->data<<" ";
}
p = p->rchild;

}
}
asmlearn 2010-11-20
  • 打赏
  • 举报
回复
是呀,先找中间,再找两边。
yuannan 2010-11-19
  • 打赏
  • 举报
回复
根据中序遍历的顺序,找节点,左指针为空就指向前面的节点,右指针为空就指向后面的节点/
上面的前面和后面都是相对于中序遍历序列来说的

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧