一般数据结构中的visit函数具体意义是什么,其作用是什么?
给出定义的内容,不要纯算法,要文子解说的,还有就是有关二叉树链表的status(*Visit)(TElemTypee)指的是什么?回答好的加分。...
给出定义的内容,不要纯算法,要文子解说的,还有就是有关二叉树链表的status (* Visit)(TElemType e)指的是什么?回答好的加分。
展开
2个回答
展开全部
visit 一般是指树型链表结构中对某个节点内容进行访问的函数,就是取出节点内容去做某一件事,通常算法中不写出具体函数内容。
树型链表结构中自顶开始按照某种顺序顺藤摸瓜至某个节点的过程称为“遍历”:
void traverse(link h, void visit(link))
{
if (h == 0) return;
visit(h);
traverse(h->l, visit);
traverse(h->r, visit);
}
前序遍历(非递归):
非递归的基于栈的函数与上面的递归函数在功能上是相等的。
void traverse(link h, void visit(link))
{
Stack<link> s;
s.push(h);
while(!s.empty())
{
visit(h = s.pop());
if (h->l != 0) s.push(h->l);
if (h->r != 0) s.push(h->r);
}
}
层次顺序的遍历:
把前序遍历中基本数据结构从栈转变成队列,这样的转变就使遍历转成层次顺序的。
void traverse(link h, void visit(link))
{
Queue<link> q;
q.put(h);
while (!q.empty())
{
visit(h = q.get());
if (h->l != 0) q.put(h->l);
if (h->r != 0) q.put(h->r);
}
}
树型链表结构中自顶开始按照某种顺序顺藤摸瓜至某个节点的过程称为“遍历”:
void traverse(link h, void visit(link))
{
if (h == 0) return;
visit(h);
traverse(h->l, visit);
traverse(h->r, visit);
}
前序遍历(非递归):
非递归的基于栈的函数与上面的递归函数在功能上是相等的。
void traverse(link h, void visit(link))
{
Stack<link> s;
s.push(h);
while(!s.empty())
{
visit(h = s.pop());
if (h->l != 0) s.push(h->l);
if (h->r != 0) s.push(h->r);
}
}
层次顺序的遍历:
把前序遍历中基本数据结构从栈转变成队列,这样的转变就使遍历转成层次顺序的。
void traverse(link h, void visit(link))
{
Queue<link> q;
q.put(h);
while (!q.empty())
{
visit(h = q.get());
if (h->l != 0) q.put(h->l);
if (h->r != 0) q.put(h->r);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |